[
  {
    "path": ".github/workflows/notify-telegram-pr.yml",
    "content": "name: notify-telegram-pr\n\non:\n  pull_request_target:\n    types: [opened, reopened]\n  issues:\n    types: [opened, reopened]\njobs:\n  build:\n    name: Notify Telegram\n    runs-on: ubuntu-latest\n    steps:\n      - name: send telegram message on PR opened\n        if: github.event.pull_request\n        uses: appleboy/telegram-action@master\n        with:\n          to: ${{ secrets.TELEGRAM_TO }}\n          token: ${{ secrets.TELEGRAM_TOKEN }}\n          if: github.event.issue\n          message: |\n            ${{ github.actor }} created PR ${{ github.event.pull_request.title }}\n            See changes: ${{ github.event.pull_request.html_url }}\n      - name: send telegram message on issue opened\n        if: github.event.issue\n        uses: appleboy/telegram-action@master\n        with:\n          to: ${{ secrets.TELEGRAM_TO }}\n          token: ${{ secrets.TELEGRAM_TOKEN }}\n          if: github.event.issue\n          message: |\n            ${{ github.actor }} created issue ${{ github.event.issue.title }}\n            See issue: ${{ github.event.issue.html_url }}\n"
  },
  {
    "path": ".github/workflows/pages.yml",
    "content": "# Sample workflow for building and deploying a Jekyll site to GitHub Pages\nname: Deploy Jekyll site to Pages\n\non:\n  # Runs on pushes targeting the default branch\n  push:\n    branches: [\"main\"]\n\n  # Allows you to run this workflow manually from the Actions tab\n  workflow_dispatch:\n\n# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\n# Allow one concurrent deployment\nconcurrency:\n  group: \"pages\"\n  cancel-in-progress: true\n\njobs:\n  # Build job and deploy\n  build:\n    runs-on: ubuntu-latest\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n      - name: Setup node\n        uses: actions/setup-node@v3\n        with:\n          node-version: 20\n      - name: Install Node deps\n        run: npm ci\n      - name: Compile typescript\n        run: npm run build\n      - name: Setup Ruby\n        uses: ruby/setup-ruby@v1\n        with:\n          ruby-version: '3.0' # Not needed with a .ruby-version file\n          bundler-cache: true # runs 'bundle install' and caches installed gems automatically\n          cache-version: 0 # Increment this number if you need to re-download cached gems\n      - name: Setup Pages\n        id: pages\n        uses: actions/configure-pages@v5\n      - run: bundle exec jekyll build --baseurl \"${{ steps.pages.outputs.base_path }}\" # defaults output to '/_site'\n        env:\n          JEKYLL_ENV: production\n      - name: Upload artifact\n        uses: actions/upload-pages-artifact@v3 # This will automatically upload an artifact from the '/_site' directory\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v4\n"
  },
  {
    "path": ".github/workflows/preview-pr.yaml",
    "content": "name: preview-pr\n\non:\n  pull_request_target:\n    types: [opened, reopened, synchronize]\n    \npermissions:\n  pull-requests: write \n    \njobs:\n  authorize:\n    environment:\n      ${{ github.event_name == 'pull_request_target' &&\n      github.event.pull_request.head.repo.full_name != github.repository &&\n      'external' || 'internal' }}\n    runs-on: ubuntu-latest\n    steps:\n      - run: \"true\"\n      \n  build:\n    needs: authorize\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v3\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n      - name: Setup Ruby\n        uses: ruby/setup-ruby@v1\n        with:\n          ruby-version: '3.0'\n          bundler-cache: true\n      - run: bundle exec jekyll build --baseurl \"\"\n      - name: Publish to Cloudflare Pages\n        id: preview-pages\n        uses: cloudflare/pages-action@v1\n        with:\n          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}\n          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT }}\n          projectName: hack-gpon-preview\n          directory: _site\n          branch: preview\n      - uses: thollander/actions-comment-pull-request@v2\n        with:\n          message: |\n            Preview of the website obtained from the PR: ${{ steps.preview-pages.outputs.url }}\n\n"
  },
  {
    "path": ".gitignore",
    "content": "### Jekyll ###\n_site/\n.sass-cache/\n.jekyll-cache/\n.jekyll-metadata\nGemfile.lock\nassets/js/zzzz-search-data.json\nnode_modules/\nassets/js/generated\n"
  },
  {
    "path": "404.md",
    "content": "---\nlayout: default\ntitle: Page not found\npermalink: /404\nnav_exclude: true\nsearch_exclude: true\ndescription: Opps. The page you are looking for got lost.\n\n---\n\n<p>This is not the ONT you are looking for. Try using the navigation bar {% if site.search_enabled != false %}or search {% endif %}to find what you're looking for or go to the <a href=\"{{ '/' | relative_url }}\">website's home page</a>.</p>\n\n<div class=\"ont-404 mt-9\">\n    <svg width=\"116.52087mm\" height=\"36.783329mm\" viewBox=\"0 0 116.52087 36.783329\" version=\"1.1\" id=\"svg28164\"   xmlns=\"http://www.w3.org/2000/svg\" xmlns:svg=\"http://www.w3.org/2000/svg\">\n        <path id=\"path31930\" d=\"m 0,11.403492 v 6.35 c 0,0.584491 0.473832,1.058334 1.058334,1.058334 0.102211,0 0.19827,0 0.290938,0 h 2.8840618 v 1.058333 c 0,0.264583 0.529166,0.529167 1.058333,0.529167 l 12.4286992,0.517789 c 0.49499,0.684954 1.162822,1.069287 1.858801,1.069711 H 32.808333 V 20.928492 H 34.925 v -1.058333 c 1.169003,0 2.116666,-0.71075 2.116666,-1.5875 0,-0.87675 -0.947663,-1.5875 -2.116666,-1.5875 V 15.636826 H 32.808333 V 14.578492 H 19.579167 c -0.67963,0.01667 -1.328582,0.399071 -1.812293,1.067647 L 5.2916668,16.165992 c -0.529167,0 -1.058333,0.264584 -1.058333,0.529167 v 1.058333 H 1.490348 c -0.131088,-0.0042 -0.276807,0 -0.432014,0 v -6.35 z m 19.579167,4.233334 h 1.5875 v 2.645833 2.645833 h -1.5875 c -0.876753,0 -1.5875,-1.184592 -1.5875,-2.645833 0,-1.461241 0.710747,-2.645833 1.5875,-2.645833 z m 2.645833,0 h 1.058333 v 5.291666 H 22.225 Z m 2.116667,0 H 25.4 v 5.291666 h -1.058333 z m 2.116666,0 H 31.75 v 5.291666 H 26.458333 Z M 15.875,16.695159 h 1.058333 v 3.175 h -3.175 V 17.753492 H 12.7 v 1.852084 H 9.5249998 v -1.5875 h -1.058333 v 1.322916 h -3.175 v -2.116666 h 1.058333 v 1.058333 h 1.058333 v -1.058333 h 3.1750002 v 1.322916 h 1.058334 v -1.5875 h 3.175 v 1.852084 H 15.875 Z m 16.933333,0 h 1.058334 v 3.175 h -1.058334 z m 2.091862,1.058333 c 0.587095,0 1.083138,0.236908 1.083138,0.529167 0,0.292259 -0.496043,0.529167 -1.083138,0.529167 z\"></path>\n        <path d=\"M 44.906979,27.034723 H 116.52088 V 9.7486096 H 44.906979 Z m 11.641664,-1.058334 h -10.58333 v -1.940278 h 8.11389 V 12.410555 h -8.11389 v -1.603611 h 10.58333 z m 43.744457,0 H 57.606983 V 10.806944 H 100.2931 Z m 15.16945,0 h -14.11112 v -1.940278 h 12.02973 l -0.0353,-11.1125 h -11.99445 v -2.116667 h 14.11112 z M 53.020873,13.276388 v 9.877779 h -7.05556 v -9.877779 h 3.81 z M 109.46532,14.6875 v 0.705555 h -1.76389 v 0.705556 h 1.76389 v 0.705555 h -1.76389 v 0.705556 h 1.76389 v 0.705556 h -1.76389 v 0.705555 h 1.76389 v 0.705556 h -1.76389 v 0.705555 h 1.76389 V 21.0375 h -1.76389 v 0.705556 h 1.76389 v 1.411111 h -8.11389 l 0.0706,-4.198056 -0.0706,-4.974167 h 8.11389 z m 2.82223,8.466667 h -1.76389 v -9.172223 l 1.75727,-0.01654\" id=\"path2\"></path>\n        <rect id=\"rect13056\" height=\"8.8194437\" x=\"33.669872\" y=\"20.397436\" width=\"1.058\" transform=\"rotate(-30.427871)\"></rect>\n        <rect id=\"rect13056-0\" height=\"8.8194437\" x=\"19.819189\" y=\"29.127432\" width=\"1.058\" transform=\"rotate(-47.800842)\"></rect>\n        <rect id=\"rect13056-3\" height=\"8.8194437\" x=\"52.298908\" y=\"-11.319631\" width=\"1.058\" transform=\"matrix(0.86226741,0.50645327,0.50645327,-0.86226741,0,0)\"></rect>\n        <rect id=\"rect13056-0-9\" height=\"8.8194437\" x=\"47.068806\" y=\"4.4197102\" width=\"1.058\" transform=\"matrix(0.6717097,0.74081447,0.74081447,-0.6717097,0,0)\"></rect>\n    </svg>\n</div>"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "<!-- omit in toc -->\n# Contributing to Hack-Gpon\n\nFirst off, thanks for taking the time to contribute! ❤️\n\nAll types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉\n\n> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:\n> - Star the project\n> - Tweet about it\n> - Refer this project in your project's readme\n> - Mention the project at local meetups and tell your friends/colleagues\n\n<!-- omit in toc -->\n## Table of Contents\n\n- [I Have a Question](#i-have-a-question)\n- [I Want To Contribute](#i-want-to-contribute)\n  - [Reporting Bugs](#reporting-bugs)\n  - [Suggesting Enhancements](#suggesting-enhancements)\n  - [Your First Code Contribution](#your-first-code-contribution)\n  - [Improving The Documentation](#improving-the-documentation)\n- [Styleguides](#styleguides)\n  - [Commit Messages](#commit-messages)\n- [Join The Project Team](#join-the-project-team)\n\n\n\n## I Have a Question\n\n> If you want to ask a question, we assume that you have read the available [Documentation](https://hack-gpon.org/).\n\nBefore you ask a question, it is best to search for existing [Issues](https://github.com/hack-gpon/hack-gpon.github.io/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.\n\nIf you then still feel the need to ask a question and need clarification, we recommend the following:\n\n- Open an [Issue](https://github.com/hack-gpon/hack-gpon.github.io/issues/new).\n- Provide as much context as you can about what you're running into.\n- Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant.\n\nWe will then take care of the issue as soon as possible.\n\n<!--\nYou might want to create a separate issue tag for questions and include it in this description. People should then tag their issues accordingly.\n\nDepending on how large the project is, you may want to outsource the questioning, e.g. to Stack Overflow or Gitter. You may add additional contact and information possibilities:\n- IRC\n- Slack\n- Gitter\n- Stack Overflow tag\n- Blog\n- FAQ\n- Roadmap\n- E-Mail List\n- Forum\n-->\n\n## I Want To Contribute\n\n> ### Legal Notice <!-- omit in toc -->\n> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license.\n\n### Reporting Bugs\n\n<!-- omit in toc -->\n#### Before Submitting a Bug Report\n\nA good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible.\n\n- Make sure that you are using the latest version.\n- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://hack-gpon.org/). If you are looking for support, you might want to check [this section](#i-have-a-question)).\n- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/hack-gpon/hack-gpon.github.ioissues?q=label%3Abug).\n- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue.\n- Collect information about the bug:\n  - Stack trace (Traceback)\n  - OS, Platform and Version (Windows, Linux, macOS, x86, ARM)\n  - Version of the interpreter, compiler, SDK, runtime environment, package manager, depending on what seems relevant.\n  - Possibly your input and the output\n  - Can you reliably reproduce the issue? And can you also reproduce it with older versions?\n\n<!-- omit in toc -->\n#### How Do I Submit a Good Bug Report?\n\n> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to <>.\n<!-- You may add a PGP key to allow the messages to be sent encrypted as well. -->\n\nWe use GitHub issues to track bugs and errors. If you run into an issue with the project:\n\n- Open an [Issue](https://github.com/hack-gpon/hack-gpon.github.io/issues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.)\n- Explain the behavior you would expect and the actual behavior.\n- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case.\n- Provide the information you collected in the previous section.\n\nOnce it's filed:\n\n- The project team will label the issue accordingly.\n- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced.\n- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution).\n\n<!-- You might want to create an issue template for bugs and errors that can be used as a guide and that defines the structure of the information to be included. If you do so, reference it here in the description. -->\n\n\n### Suggesting Enhancements\n\nThis section guides you through submitting an enhancement suggestion for Hack-Gpon, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.\n\n<!-- omit in toc -->\n#### Before Submitting an Enhancement\n\n- Make sure that you are using the latest version.\n- Read the [documentation](https://hack-gpon.org/) carefully and find out if the functionality is already covered, maybe by an individual configuration.\n- Perform a [search](https://github.com/hack-gpon/hack-gpon.github.io/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.\n- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library.\n\n<!-- omit in toc -->\n#### How Do I Submit a Good Enhancement Suggestion?\n\nEnhancement suggestions are tracked as [GitHub issues](https://github.com/hack-gpon/hack-gpon.github.io/issues).\n\n- Use a **clear and descriptive title** for the issue to identify the suggestion.\n- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.\n- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you.\n- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. <!-- this should only be included if the project has a GUI -->\n- **Explain why this enhancement would be useful** to most Hack-Gpon users. You may also want to point out the other projects that solved it better and which could serve as inspiration.\n\n<!-- You might want to create an issue template for enhancement suggestions that can be used as a guide and that defines the structure of the information to be included. If you do so, reference it here in the description. -->\n\n### Your First Code Contribution\n<!-- TODO\ninclude Setup of env, IDE and typical getting started instructions?\n\n-->\n\n### Improving The Documentation\n<!-- TODO\nUpdating, improving and correcting the documentation\n\n-->\n\n## Styleguides\n### Commit Messages\n<!-- TODO\n\n-->\n\n## Join The Project Team\n<!-- TODO -->\n\n<!-- omit in toc -->\n## Attribution\nThis guide is based on the **contributing-gen**. [Make your own](https://github.com/bttger/contributing-gen)!\n"
  },
  {
    "path": "Gemfile",
    "content": "source \"https://rubygems.org\"\n\n\ngem \"webrick\" \ngem \"rake\"\ngem \"json\"\n\ngroup :jekyll_plugins do\n    gem \"jekyll-last-modified-at\"\n    gem \"jekyll-redirect-from\"\n    gem \"jekyll-remote-theme\"\n    gem \"jekyll-seo-tag\"\n    gem 'jekyll-default-layout'\n    gem 'jekyll-include-cache'\n    gem 'jekyll-sitemap'\nend\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 hack-gpon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "```\n _   _               _       ____  ____    ___   _   _ \n| | | |  __ _   ___ | | __  / ___||  _ \\  / _ \\ | \\ | |\n| |_| | / _` | / __|| |/ / | |  _ | |_) || | | ||  \\| |\n|  _  || (_| || (__ |   <  | |_| ||  __/ | |_| || |\\  |\n|_| |_| \\__,_| \\___||_|\\_\\  \\____||_|     \\___/ |_| \\_|\n```\n\n# Hack GPON\n\nBased on just-the-docs theme:\n- [GitHub](https://github.com/just-the-docs/just-the-docs) \n- [Demo](https://just-the-docs.github.io/just-the-docs/)\n\n\nif you want to contribute there is something to be done:\n\n- a unique template for all sticks\n- how to use arduino as TTL/UART adapter\n- theoretical information on GPON\n- absent stick information\n- quick start\n- absent and new ont\n\n##  How to build\nThis website uses typescript, so remember to:\n\n- Install node (20)\n- Run npm ci to install all relevant typescript packages\n- Run npm run build to transpile ts to js\n\nAlternatively, you can just run:\n`docker-compose up -d typescript` which will build all the required typescript files for you"
  },
  {
    "path": "_config.docker.yml",
    "content": "url: \"http://localhost:4000\"\n"
  },
  {
    "path": "_config.yml",
    "content": "remote_theme: simonebortolin/just-the-docs\ntitle: \"Hack GPON\"\nbaseurl: \npermalink: '/:title'\nsearch_enabled: true\nsearch:\n  # Split pages into sections that can be searched individually\n  # Supports 1 - 6, default: 2\n  heading_level: 2\n  # Maximum amount of previews per search result\n  # Default: 3\n  previews: 3\n  # Maximum amount of words to display before a matched word in the preview\n  # Default: 5\n  preview_words_before: 5\n  # Maximum amount of words to display after a matched word in the preview\n  # Default: 10\n  preview_words_after: 10\n  # Set the search token separator\n  # Default: /[\\s\\-/]+/\n  # Example: enable support for hyphenated search words\n  tokenizer_separator: /[\\s/]+/\n  # Display the relative url in search results\n  # Supports true (default) or false\n  rel_url: true\n  # Enable or disable the search button that appears in the bottom right corner of every page\n  # Supports true or false (default)\n  button: false\n\nplugins:\n  - jekyll-seo-tag\n  - jekyll-last-modified-at\n  - jekyll-redirect-from\n  - jekyll-default-layout\n  - jekyll-sitemap\n\ncolor_scheme: \"auto\"\nenable_switch_color_scheme: true \nenable_localstorage_color_scheme: true\nnav_sort: case_sensitive\n\naux_buttons:\n  - title: \"GitHub\"\n    color: 'purple'\n    icon: 'github'\n    link: '//github.com/hack-gpon/hack-gpon.github.io'\n  - title: \"Telegram\"\n    color: 'blue'\n    icon: 'telegram'\n    link: '//t.me/HackGPON'\n\n#aux_links:\n#  \"Hack GPON on GitHub\":\n#    - \"//github.com/hack-gpon/hack-gpon.github.io\"\n#  \"Hack GPON on Telegram\":\n#    - \"//t.me/HackGPON\"\n\nback_to_top: true\nback_to_top_text: \"Back to top\"\n\nfooter_content: \"Copyright &copy; 2022-2023. The documentation hereby found is distributed under the terms of the <a href=\\\"https://github.com/hack-gpon/hack-gpon.github.io/blob/main/LICENSE\\\">MIT License</a>. Any external reference, link or software retains its original license and is not under the control of this website. <a href=\\\"/privacy-policy\\\">Privacy Policy</a>.\"\n\nlast_edit_timestamp_script: true\n\ngh_edit_link: true # show or hide edit this page link\ngh_edit_link_text: \"Edit this page on GitHub\"\ngh_edit_repository: \"https://github.com/hack-gpon/hack-gpon.github.io\" # the github URL for your repo\ngh_edit_branch: \"main\" # the branch that your docs is served from\n# gh_edit_source: docs # the source that your files originate from\ngh_edit_view_mode: \"tree\"\ngh_owner_name: hack-gpon\ngh_repository_name: hack-gpon.github.io\n\nwhitelist:\n  - jekyll-redirect-from\n\nmermaid_enabled: true\nmermaid:\n  # Version of mermaid library\n  # Pick an available version from https://cdn.jsdelivr.net/npm/mermaid/\n  version: \"9.1.3\"\n  # Configured theme of mermaid diagrams\n  # Pick an avaiable theme from https://mermaid-js.github.io/mermaid/#/theming\n  theme: \"default\"\n  # Additional configuration available matching pattern as defined in https://mermaid-js.github.io/mermaid/#/./Setup.\n  # For example,\n  # logLevel: 'fatal',\n  # sequence:\n  #   diagramMarginX: 50\n  #   actorMargin: 50\n  # gantt:\n  #   barGap: 4\n  #   topPadding: 50\n\nenable_modal: true\n\ncollections:\n  ont:\n    permalink: \"/:path/\"\n    output: true\n  ont_xgs:\n    permalink: \"/xgs/:path/\"\n    output: true\n  ont_epon:\n    permalink: \"/epon/:path/\"\n    output: true\n  router_pon:\n    permalink: \"/router/:path/\"\n    output: true\n  tools:\n    permalink: \"/:path/\"\n    output: true\n  sfp:\n    permalink: \"/:path/\"\n    output: true\n  gpon:\n    permalink: \"/:path/\"\n    output: true\n  sfp_cage:\n    permalink: \"/:path/\"\n    output: true\n\njust_the_docs:\n  collections:\n    ont:\n      name: ONT GPON\n      nav_fold: true\n    ont_xgs:\n      name: ONT XGS-PON\n      nav_fold: true\n    ont_epon:\n      name: ONT EPON\n      nav_fold: true\n    router_pon:\n      name: Router PON\n      nav_fold: true\n    tools:\n      name: Tools\n      nav_fold: true\n    sfp:\n      name: SFP Resources & standard\n      nav_fold: true\n    gpon:\n      name: GPON Resources & standard\n      nav_fold: true\n    sfp_cage:\n      name: SFP cage\n      nav_fold: true\n\ndefaults:\n  -\n    scope:\n      path:            \"assets/**/*.pdf\"\n    values:\n      sitemap:         false\n\nenable_rainbow: true"
  },
  {
    "path": "_gpon/g_984_series.md",
    "content": "---\ntitle: GPON G.984 Series\nhas_children: false\nnav_order: 3\nlayout: default\n---\n\nThe information on this page is taken from the GPON standard and information from the major vendors of GPON equipment, each individual item containing a verifiable citation in the standard. Feel free to cite this page as: `{{ page.title }}, Hack GPON. Available at: https://hack-gpon.org{{ page.url }}`.\n\n| G.984.1                 | G.984.2                             | G.984.3                        | G.984.4                            | G.988 (ex G.Imp984.4)    |\n| ----------------------- | ----------------------------------- | ------------------------------ | ---------------------------------- | ------------------------ |\n| General Characteristics | Physical Media Dependant Layer      | Transmission Convergence Layer | ONT Management & Control Interface | OMCI Implementer's Guide |\n| Architecture            | Bit Rate/coding                     | GTC Protocol                   | Reference model                    |                          |\n| Distance/Reach          | Wavelength                          | GTC Framing                    | OMCI requirement                   |                          |\n| Split Ratio             | Optical element specs and operation | ONU Activation                 | MIBs                               |                          |\n| Protection              | Link budget (amendment)             | Security / FEC                 | OMCC                               |                          |\n|                         |                                     | Alarms / Monitoring            |                                    |                          |\n|                         |                                     | OMCI                           |                                    |                          |\n\n# General Concepts[^zyxel]\n\n- Bitrate: 1.2 Gbps Upstream; 2.4 Gbps Downstream.\n- Physical Reach: Max physical distance between OLT and ONT.\n- Differential Fiber Distance: Distance between closest and farthest ONT from OLT (max = 20km)\n\n## Basic Performance Parameters[^cisco]\n\n| Upstream (Rate - Gbps) | Downstream (Rate - Gbps) |\n| ---------------------- | ------------------------ |\n| 0.15552                | 1.24416                  |\n| 0.62208                | 1.24416                  |\n| 1.24416                | 1.24416                  |\n| 0.15552                | 2.48832                  |\n| 0.62208                | 2.48832                  |\n| **1.24416**            | **2.48832**              |\n| 2.48832                | 2.48832                  |\n\n1.24416 Gbps up, 2.48832 Gbps down is the most supported speed combination at current time.\n\n# GPON Terminology\n\n{% include image.html file=\"quick-start/gpon-terminology.png\" alt=\"Overview of GPON Terminology\" caption=\"Overview of GPON Terminology\" %}\n\n## ONU Identifier (ONU-ID)[^zyxel]\n* 8 bit identifier (0~255)\n    * 0 .. 253 Assignable\n    * 254 Reserved\n    * 255 Broadcast/unassigned\n* The OLT assigns an id to any ONU during the ONU's activation using the PLOAM channel.\n* ONU-ID is unique across the PON and remains valid until the ONU is powered off, deactivated by the OLT or moves itself into an inactive state.\n\n## Allocation Identifier (Alloc-ID)[^zyxel]\n* Alloc-ID is a 12-bit identifier (0 .. 4095) that the OLT assigns to an ONU's traffic-bearing entity.\n    * 0 .. 253 Default\n    * 254 Broadcast\n    * 255 Unassigned\n    * 256 .. 4095 Assignable\n* A Traffic-bearing entity can be represented either by a T-CONT or by the upstream OMCC.\n\n## Transmission Containers (T-CONT)[^zyxel],[^broadbandforum]\nA Transmission Container (T-CONT) is an ONU object representing a group of logical connections that appear as a single entity for the purpose of upstream bandwidth assignment on the PON.\n* Bandwidth assignment and QoS control are performed in every T-CONT by fixed and dynamic methods.\n* There are 5 types of T-CONT Traffic Descriptors:\n    * Type 1: fixed bandwidth;\n    * Type 2 and Type 3: guaranteed bandwidth;  \n    * Type 4: best-effort;\n    * Type 5: mixed type, involving all bandwidth types and bearing all services\n\n| Type 1    | Type 2    | Type 3    | Type 4 | Type 5           |\n| --------- | --------- | --------- | ------ | ---------------- |\n| SIR       |           |           |        | SIR              |\n|           | AIR       | AIR       |        | AIR              |\n| PIR = SIR | PIR = AIR | PIR > AIR | PIR    | PIR >= SIR + AIR |\n\n* For TR-156 and TR-167, each T-CONT represents a traffic class\n* Each ONU is assigned at least one Alloc-ID which is equal to that ONU's ONU-ID and may be assigned additional Alloc-IDs per the OLT's discretion.\n    * Typically have 4 T-CONTs, supporting 4 traffic classes, plus an extra one for OMCI\n* The default Alloc-ID is used to carry the upstream PLOAM and OMCC traffic and may carry user data traffic.\n* The OLT schedules upstream traffic across all ONUs according to the priority and weight assigned to each T-CONT, and their buffer occupancy. Other bandwidth assignment mechanisms are available, for example fixed bandwidth, assured bandwidth, and nonassured bandwidth[^broadbandforum].\n\n\n## Dynamic Bandwidth Allocation (DBA)\n\n{% include image.html file=\"quick-start/pon_dba.jpg\" alt=\"PON DBA Abstraction\" caption=\"PON DBA Abstraction\" %}\n\n\nDynamic Bandwidth Allocation (DBA) is a technique by which traffic bandwidth in a shared telecommunications medium can be allocated on demand and fairly between different users of that bandwidth. It is performed on the upstream traffic[^zyxel].\n\nWith DBA, the OLT assesses the bandwidth needs of the ONUs in real time and allocates upstream PON capacity accordingly[^broadbandforum].\n\nDBA basic model supports[^zyxel]:\n- Fixed bandwidth (highest priority)\n- Assured bandwidth\n- Non-assured bandwidth\n- Best-effort bandwidth (lowest priority)\n\n{% include image.html file=\"quick-start/bda-pratical.jpg\" alt=\"Bandwidth Assignment practical example\" caption=\"Bandwidth Assignment practical example\" %}\n\n## GPON transmission basics[^cisco]\n\nKey Terms:\n- Physical layer overhead upstream (PLOu) - Upstream physical layer overhead.\n- Physical layer OAM upstream (PLOAMu) - PLOAM messages of upstream data. Think of this as a message-based operation and management channel between the OLT and ONU/ONTs. \n- Power level sequence upstream (PLSu) - Upstream power level sequence \n- Dynamic bandwidth report upstream (DBRu) - Upstream dynamic bandwidth report\nPayload - User data \n- PCBd - Physical Control Block downstream\n- OMCC - Optical Network Unit Management and Control Channel\n- OMCI - Optical Network Unit Management and Control Interface\n\n### GPON Encapsulation\n\nGPON uses two layers of encapsulation:\n\n1. TDM and Ethernet frames are wrapped into GTC Encapsulation Method (GEM) frames, which have a GFP-like format (derived from Generic Frame Procedure ITU G.7401). \nThe main purpose of the GEM frame is to provide a frame-oriented service, as an alternative to ATM, in order to efficiently accommodate Ethernet and TDM frames. With GEM, all traffic is mapped across the GPON network using a variant of SONET/SDH GFP. GEM natively supports transportation of voice, video, and data without an added ATM or IP encapsulation layer[^medium],[^fs].\n2. ATM and GEM frames are both encapsulated into GTC frames that are finally transported over the PON[^medium],[^fs].\n\nITU-T G.984 defines GEM as the only data transport scheme for GPON. Bandwidth allocation in GPON grants individual transmission opportunities to the ONU's traffic-bearing entities on the timescale of a single GTC frame[^zyxel].\n\nAs shown in the image, the difference between a downstream and upstream frame. \n\n{% include image.html file=\"quick-start/gtc-layer-framing.png\" alt=\"Downstream and Upstream GTC frame\" caption=\"Downstream and Upstream GTC frame\" %}\n\n### Downstream[^zyxel],[^broadbandforum],[^cisco]\n\n{% include image.html file=\"quick-start/gpon-downstream.jpg\" alt=\"GPON Downstream\" caption=\"GPON Downstream\" %}\n\nA downstream GPON frame has a fixed length of 125 μs and is 38880 bytes long which corresponds to the downstream data rate of 2.48832 Gbps, comprised of two components: physical control block downstream (PCBd) and payload.\n\n{% include image.html file=\"quick-start/gtc-layer-frame.png\" alt=\"GTC Layer framing\" caption=\"GTC Layer framing\" %}\n\nThe PCBd length range depends on the number of allocation structures per frame. \n\nThe OLT broadcasts PCBd to all ONU/ONTs. The ONU/ONTs receive the PCBd and performs operations based on the information received. GPON use Broadcast downstream data transmission with AES (Advanced Encryption Standard) to ensure secure delivery to destination:\n- Traffic multiplexing is centralized.\n- GEM Port-ID is the key to identify the GEM frames that belong to different downstream logical connections.\n- Only frames with the appropriate Port-IDs are allowed through to the GEM client function.\n- Each ONU filters the downstream GEM frame based on their GEM Port-ID and processes only the GEM frames that belong to that ONU.\n\nPCBd consists of the GTC header and BWmap:\n- GTC Header - Used for frame delimitation, synchronization, and forward error correction (FEC).\n- BWmap - Field notifies very ONU of upstream bandwidth allocation. Specifies the start and end upstream time slots for the T-CONTs of each ONU. This ensures that all ONUs send data based on the time slots specified by the OLT to prevent data conflict.\n\n{% include image.html file=\"quick-start/downstream-multiplexing.png\" alt=\"Downstream multiplexing (shaded GEM port indicates multicast)\" caption=\"Downstream multiplexing (shaded GEM port indicates multicast)\" %}\n\n1. The OLT sends Ethernet frames from Uplink ports to the GPON service processing module based on configured rules to the PON ports.\n2. The GPON service processing module then encapsulates the Ethernet frames into GEM port data packets for downstream transmission. \n3. GPON transmission convergence (GTC) frames that contain GEM PDUs are broadcast to all ONT/ONUs connected to the GPON port.\n4. The ONT/ONU filters the received data based on the GEM port ID contained in the GEM PDU header and only retains data significant to the GEM ports on this ONT/ONU.\n5. The ONT decapsulates the data and sends the Ethernet frames to the end users via service ports.\n\n### Upstream[^zyxel],[^broadbandforum],[^cisco]\n\n{% include image.html file=\"quick-start/gpon-upstream.jpg\" alt=\"GPON Upstream\" caption=\"GPON Upstream\" %}\n\nIn the Upstream channel, GEM traffic is carried over one or more T-CONTs. The OLT receives the transmission associated with the T-CONT and the frames are forwarded to the GEM TC adapter and then the GEM client.\n\n- Use Time Division Multiple Access (TDMA) for upstream data transmission w/o AES encryption.\n    * Distance between the OLT and ONT/ONU is measured (Ranging):\n        * The OLT starts the process on an ONU when the ONU first registers with the OLT and obtains round trip delay (RTD) of the ONU. Based on the RTD, other key components are identified:\n        * Calculation of the physical reach of that specific ONU, as this OLT requires a proper equalization delay (EqD) for each ONU based on physical reach.\n        * RTC and EqD synchronize data frames sent by all ONUs.\n    * Time slots are allocated based on distance. In order to prevent data conflict (collisions), the OLT must be able to precisely measure the distance between itself and each ONU to provide a proper time slot to facilitate data upstream. This allows the ONUs to send data at specified time slots, to prevent issues upstream. This process is achieved through a technique called ranging. \n    * The ONT/ONU sends traffic upstream based on the granted time slot.\n- Dynamic Bandwidth Allocation (DBA) enables the OLT to monitor in real-time, congestion, bandwidth usage, and configuration.\n- Traffic multiplexing is distributed.\n- The OLT grants upstream bandwidth allocation.\n- The ONU traffic-bearing entities are identified by their Allocations IDs.\n- Alloc-IDs are multiplexed in time as specified by the bandwidth-map (provided by the OLT in the downstream frame).\n- Within its bandwidth allocation, the ONU uses the GEM Port-IF as key to identify upstream GEM frames.\n- Each upstream frame contains the content carried by one or more T-CONTs.\n- All ONUs connected to a GPON port share the upstream bandwidth.\n- All ONUs send their data upstream at their own time slots based on bandwidth map (BWmap) requirements. \n- Each ONU reports the status of data to be sent to the OLT by use of upstream frames. OLT uses DBA to allocate upstream time slots to ONUs and sends updates in each frame.\n- Burst Technology: Upstream packet flow is achieved via bursts, with each ONU/ONT responsible for data transmission within its allocated time slots. When an ONU/ONT is not within its time slot, the device disables transmission of its optical transceiver to prevent other ONU/ONT impact. \n\n\n{% include image.html file=\"quick-start/upstream-multiplexing.png\" alt=\"Upstream multiplexing\" caption=\"Upstream multiplexing\" %}\n\n1. ONT/ONUs send Ethernet frames to GEM ports based on configured rules that map service ports and GEM ports.\n2. GEM ports encapsulate the Ethernet frames into GEM PDUs and add these PDUs to T-CONT queues based on rules that map GEM ports and T-CONT queues.\n3. T-CONT queues use time slots based on DBA, then transmit upstream GEM PDUs to the OLT.\n4. OLT decapsulates the GEM PDU, the original Ethernet frame is now seen.\n5. OLT sends the Ethernet frames from a specified uplink port based on rules that map service ports and uplink ports. \n\n## Protocol stack for the C/M-plane[^standardgpon] \n\nThe control and management plane in the GTC system consists of three parts: embedded OAM,\nPLOAM and OMCI. The embedded OAM and PLOAM channels manage the functions of the PMD\nand the GTC layers. The OMCI provides a uniform system for managing higher (service-defining)\nlayers.\n\n{% include image.html file=\"quick-start/uplane.png\" alt=\"The U-plane protocol stack and identification by Port-ID\" caption=\"The U-plane protocol stack and identification by Port-ID\" %}\n\n## Configuration Methods[^zyxel]\n\nSeveral methods are available for the installation and activation of the ONU.\n– Method A: Match serial number and password.\n– Method C: Match PLOAM password or serial number.\n– Method C-autolock: Match serial number.\n– Method D: Volatile auto provision by template.\n– Method E: Non-volatile auto provision by template.\n\nIf the ONU is not legal, the ONU registration activation will fail, see [GPON Auth](/gpon-auth) for the ONU States.\n\n## Protocol Stacks[^cisco],[^fs]\n\nThe GPON protocol has its own stack, just Ethernet or IP.\n\n{% include image.html file=\"gpon.jpg\" alt=\"PON DBA Abstraction\" caption=\"PON DBA Abstraction\" %}\n\n### Ethernet over GEM[^standardgpon]\n\nThe Ethernet frames are carried directly in the GEM frame payload. The preamble and start frame delimiter (SFD) bytes are discarded prior to GEM encapsulation. Each Ethernet frame shall be mapped to a single GEM frame (as shown in Figure) or multiple GEM frames, in which case the fragmentation rules apply.\n\n{% include image.html file=\"quick-start/gem_frame.jpg\" alt=\"Frame structure for Ethernet mapping into GEM frame\" caption=\"Frame structure for Ethernet mapping into GEM frame\" %}\n\nResolves Ethernet frames and directly maps the data of Ethernet frames into the GEM payload. GEM frames automatically encapsulate header information.\n\n1:1 alignment between an Ethernet Frame and GEM Frame. \n\n## OMCI[^cisco]\n\n- ONU Management and Control Interface (OMCI) messages are used to discover ONT/ONUs for management and control.\n- These specialized messages are sent over dedicated GEM ports established between an OLT and an ONT/ONU.\n- The OMCI protocol allows an OLT to:\n   * Establish and release connections with the ONT.\n   * Manage the UNIs on the ONT.\n   * Request configuration information and performance statistics.\n   * Autonomously alert events, such as a link failure.\n- Key Points:\n   * Protocol runs over a GEM connection between the OLT and ONT.\n   * GEM connection is established while the ONT initializes.\n   * Protocol operation is asynchronous - OLT controller functions as a primary, ONT controller as secondary. \n\n### Management Information Base (MIB) and Management entities (ME's)[^arsat]\n\nMIBs (Management Information Base) formed by Management Entities (MEs) are used to fully describe the ONU configuration, status and several other actions.\n\nOMCI constitutes the protocol which supports the set of actions performed over an ONU to create, delete and more on those MEs\n\n- A Managed Entity (ME) is composed of attributes, actions and notifications defining its characteristics.\n- Managed Entity (ME Class Value)\n    - Purpose of the entity\n    - Autonomously instantiated by the ONU or explicitly created by the OLT\n    - Relationship(s) with other managed entities\n- Attributes: Attribute Definition\n    - ME id: provides a unique number for each instance of this managed entity.\n    - List of attributes: Attribute Number within ME determined by the order in which attributes are listed\n- Actions: operations that may be performed on the entity (Create/Get/Set/Test, etc.)\n- Notifications (Alarm, AVC, TCA, Test Result)\n- There can be multiple instances of any Managed Entity: each instance has the same attributes, actions and notifications even though the values of the attributes may be different from one another.\n\n### VEIP and PPTP[^huaweiveip],[^cdatatec]\n\nAccording to the application, ONU can be divided into six types, namely SFU (Single Family Unit) ONU, HGU (Home Gateway Unit) ONU, MDU (Multi-Dwelling Unit) ONU, SBU (Single Business Unit) ONU, MTU (Multi-Tenant Unit) ONU and CBU (Cellular Backhaul Unit) ONU. However, only SFU (Single Family Unit) ONU and HGU (Home Gateway Unit) ONU are used by the end-users in practical applications.\n\nHGU ONU takes the Virtual Ethernet Interface Point (VEIP) as an OMCI administrative domain and a non-OMCI administrative domain (like TR-069). At the switchover point of the data plane, the ME can be managed only through the OMCI and is visible to the non-OMCI management domain, but not manageable. Similarly, all UNI-side modules under the VEIP are invisible to and cannot be managed by the OMCI. They are visible and manageable only to the non-OMCI management domain. In addition, each ONU should have only one VEIP.\n\nWhen the ONU uploads MIBs, the ONU reports only the mandatory MEs and supported optional MEs. It does not report the MEs related to LOID authentication, performance monitoring and T-CONT MEs of the OMCC channel.\n\nThe ONU should be used according to the device type and report either VEIP or PPTP during MIB upload. The SFU only uses and reports PPTP. VEIP should not be used. HGUs can only use and report VEIPs. PPTP should not be used. The OLT determines the ONU type based on the ONU Type attribute in ME:ONU Capability. Only one VEIP is allowed in each HGU. ONUs will report VEIP or PPTP (Physical Path Termination Point) when MIB is uploaded according to the type of the device, while HGUs can only use and report VEIP rather than PPTP. The OLT will judge the type of each ONU device according to the ONU type attribute in ONU capability.\n\n{% include image.html file=\"quick-start/veip.jpg\" alt=\"Service Process of HGU ONU\" caption=\"Service Process of HGU ONU\" %}\n\n\nSFU ONUs only support the OMCI management domain. PPTP is what SFU uses and reports, while VEIP is not available. The processing mode of OMCI configured data flow is different from that of RG flow. For OMCI data flow, there is a one-to-one mapping between the GEM port on the WAN side and the UNI port on the LAN side. All data packets can pass through without MAC address learning or forwarding. Wireless interfaces are not allowed in OMCI.\n\nSFU ONUs are designed for a single family unit with broadband access terminal function without a more complex home gateway function from the perspective of application and ONU capacity. SFU ONUs, mainly used in FTTH scenarios, typically have 1 or 4 Ethernet interfaces and are available for Ethernet / IP services, optional VoIP services (built-in IAD), or CATV services.\n\nSFU ONUs work under bridging mode (layer 2 of ISO model), support multiple VLAN functions, and their Ethernet port can be configured and managed by the OLT through OMCI / OAM. Combined with a home gateway, SFU ONUs are good at providing strong service capability.\n\n<hr>\n\n[^standardgpon]: *G.984.3: Gigabit-capable passive optical networks (GPON): Transmission convergence layer specification* https://www.itu.int/rec/T-REC-G.984.3\n[^fs]: *Comparison of EPON and GPON* https://community.fs.com/blog/comparison-of-epon-and-gpon.html\n[^zyxel]: *GPON E2E Fundamentals*, Zyxel 2018\n[^huawei]: *GPON Fundamentals*, Huawei 2010 http://jm.telecoms.free.fr/QCM_Fibre/GPON-Fundamentals_Huawei.pdf\n[^broadbandforum]: *GPON in FTTx Broadband Deployments*, Broadband Forum 2010 https://www.broadband-forum.org/download/MR-246.pdf\n[^wolon]: *Fiber SFP Module Compatibility with APC, UPC, PC* https://www.wolonte.com/news.asp?id=599\n[^cisco]: *Understand GPON Technology* https://www.cisco.com/c/en/us/support/docs/switches/catalyst-pon-series/216230-understand-gpon-technology.html\n[^medium]: *HTFuture: EPON vs GPON Standard* https://medium.com/@ivyhtfuture/epon-vs-gpon-standard-b8ec20c55bb3\n[^telecom]: *Fifty Years of Fixed Optical Networks Evolution: A Survey of Architectural and Technological Developments in a Layered Approach* https://doi.org/10.3390/telecom3040035\n[^huaweimultiplexing]: *GPON Principle---Data Multiplexing* https://forum.huawei.com/enterprise/en/gpon-principle-data-multiplexing/thread/458243-100181\n[^huaweiveip]: *VEIP knowledge* https://forum.huawei.com/enterprise/en/veip-knowledge/thread/771975-100181\n[^cdatatec]: *Differences between HGU ONU and SFU ONU* https://cdatatec.com/differences-hgu-onu-sfu-onu/\n[^arsat]: *Gpon: Tecnology*, ARSAT\n\n"
  },
  {
    "path": "_gpon/gpon-auth.md",
    "content": "---\ntitle: GPON Auth (ONU Online Status)\nhas_children: false\nnav_order: 3\nlayout: default\n---\n\nThe information on this page is taken from the GPON standard and information from the major vendors of GPON equipment, each individual item containing a verifiable citation in the standard. Feel free to cite this page as: `{{ page.title }}, Hack GPON. Available at: https://hack-gpon.org{{ page.url }}`.\n\n# ONU activation state: `Ox`[^huawei],[^standardgpon]\nThe process for an unconfigured ONU to go online involves five states:\n\n- **`O1` Initial:** the OLT sends a message to the ONU to start the ONU, and the ONU enters the standby state;\n- **`O2` Standby:** After receiving the message, the ONU extracts the delimiter value, power level, and pre-allocated compensation delay from the message, and adjusts its configurations accordingly, to support subsequent information exchanges.\n- **`O3` Serial number:** The OLT sends a serial number (SN) request to the ONU. The ONU sends its SN to the OLT. After receiving the ONU's SN, the OLT allocates a temporary ONU-ID to the ONU.\n- **`O4` Ranging:** The OLT sends a ranging request to the ONU. After receiving the ranging request from the OLT, the ONU responds with a message carrying its SN and ONU-ID. The OLT calculates the compensation delay and sends it to the ONU in a message. After receiving the message, the ONU sets the compensation delay accordingly.\n- **`O5` Operation:** The OLT sends a password request to the ONU. The ONU returns a password to the OLT. \n- **`O6` Intermittent LODS state.**\n- **`O7` Emergency Stop state.**\n\nThe password is not configured on the OLT: if the automatic discovery function is enabled on the OLT's PON port, the OLT reports an ONU auto-discovery alarm to the CLI or NMS. The ONU goes online normally only after being confirmed.\n\n```mermaid\ngraph TD\n    O1[O1 Initial state] -->|Downstream Synchronization attained| O2[O2-03 Standby-Serial number]\n    O2 -->|Assign ONU-ID Ploam and Equalization delay assigned| O4[O4 Ranging State]\n    O4 -->|Ranging Time PLOAM and Equalization delay assigned| O5[O5 Operation]\n    O5 & O4 &  O2 -->|Loss of downstream syncronizzation| O6[O6 Intermittent LODS state]\n    O2 ---->|Disable S/N Request| O7[O7 Emergency stop state]\n    O2 -->|Broadcast deactivate ONU-ID Request| O1\n    O4 --->|TO1 time expires| O2\n    O4 & O5 ---->|Disable S/N Request| O7\n    O7 ---->|Enable S/N Request| O1\n    O6 ---->|TO2 timer expires| O1\n    O6 -->|Downstream Synchronization restored| O5\n    O5 & O4 ---->|Deactive ONU-ID Request| O1\n```\n\n# Fake O5 Status[^anime4000]\n\nThere is a known issue with Alcatel/Nokia OLTs giving fake `O5` ONU Status, OLTs will hold OMCI Provisioning until correct OMCI Information is received.\n\nThis happens when the OLT detects that the ONT is `drunk`, so it tries to update the firmware before opening the GEM link. If this happens, the user has to try changing the software version or other data.\n\nThis is most likely to reduce logs from misconfigured ONTs and to be able to send updates automatically to ONTs.\n\n<hr>\n\n[^huawei]: *The Process for an ONU to go Online* https://forum.huawei.com/enterprise/en/the-process-for-an-onu-to-go-online-gpon-technical-posts-12/thread/462895-100181\n[^standardgpon]: *G.984.3: Gigabit-capable passive optical networks (GPON): Transmission convergence layer specification* https://www.itu.int/rec/T-REC-G.984.3\n[^anime4000]: *`O5` No Internet* https://github.com/Anime4000/RTL960x/blob/main/Docs/fakeO5.md"
  },
  {
    "path": "_gpon/mib.md",
    "content": "---\ntitle: GPON MIB\nhas_children: false\nnav_order: 3\nlayout: default\n---\n\nThe OMCI standard is defined in a way such that suppliers can offer modular and incremental functionality to meet different levels of customer needs.\n\nThe [^G_988] and [^G_984_4] standards define the protocol needed to handle all the features of the PON specifications ([^G_984_1], [^G_987], [^G_9807_1], ...), as well as a number of services and functionalities.\nThe standard was born with B-PON, then modified with G-PON and separated with XGS-PON. OMCI supports interoperability, yet it allows for optional components and future extensions.\n\nA protocol-independent MIB (Management Information Base) describes the exchange of information across OMCI [^G_988] and [^G_984_4]. This protocol is defined in terms of MEs. MEs are abstract representations of resources and services in an ONU. Only a small subset of the list of MEs is mandatory.\n\nThe existence of other MEs depends on the architecture and feature set supported by the vendor's [^G_988] and [^G_984_4]. Major ISPs and vendors have created their own extensions for MIBs [^att_open_omci], [^verizon_open_omci].\n\nEach ME consists of an entry ID and zero, one or more instances. Each instance has its own ID, usually starting at 0, but this is not always the case. Every instance has one or more attributes, each characterised by ID, size and content.\n\nVarious MEs are often interrelated. Clause 8.2 of [^G_988] and [^G_984_4] shows the relationship graphs between the various MEs.\nClause 9 of [^G_988] and [^G_984_4] describes how the various MEs are created. There are formally 2 modes: a managed entity which is auto-instantiated by the ONT or a managed entity which is instantiated on explicit request by the OLT.\nIn each of the 2 cases the various MEs can be: (R), (W). Only for MEs auto-instantiated by the ONT there is also (R, W) while only for MEs auto-instantiated by the OLT there are also (R, Set-by-create), (W, Set-by-create), or (R, W, Set-by-create).\n\n| Mode                  | Description [^G_984_4]                                                                                                                                                                                                                                                                                                                                                    |\n| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| (R)                   | On instantiation of the managed entity (either autonomously or on request of the OLT via a create action), the ONT sets the attribute to a default value. The OLT can only read the value of the attribute. In case of an autonomous attribute value change, the ONT will send an attribute value change notification to the OLT.                                         |\n| (W)                   | On instantiation of the managed entity (either autonomously or on request of the OLT via a create action), the ONT sets the attribute to a default value. The OLT can only write the value of the attribute. In case of an autonomous attribute value change, the ONT will NOT send an attribute value change notification to the OLT.                                    |\n| (R, W)                | On instantiation of the managed entity (either autonomously or on request of the OLT via a create action), the ONT sets the attribute to a default value. The OLT can both read and write the value of the attribute. In case of an autonomous attribute value change, the ONT will send an attribute value change notification to the OLT.                               |\n| (R, Set-by-create)    | On instantiation of the managed entity (by necessity on request of the OLT via a create action), the ONT sets the attribute to the value specified in the create command. Subsequently, the OLT can only read the value of the attribute. In case of an autonomous attribute value change, the ONT will send an attribute value change notification to the OLT.           |\n| (W, Set-by-create)    | On instantiation of the managed entity (by necessity on request of the OLT via a create action), the ONT sets the attribute to the value specified in the create command. Subsequently, the OLT can only write the value of the attribute. In case of an autonomous attribute value change, the ONT will NOT send an attribute value change notification to the OLT.      |\n| (R, W, Set-by-create) | On instantiation of the managed entity (by necessity on request of the OLT via a create action), the ONT sets the attribute to the value specified in the create command. Subsequently, the OLT can both read and write the value of the attribute. In case of an autonomous attribute value change, the ONT will send an attribute value change notification to the OLT. |\n\n\nThe following table is the result of combining the various tables in Table 8-1, Table 11-2 of [^G_984_4], Table 8-1, Table 11.2.4-1 of [^G_988], Table 1 of [^att_open_omci], Table B1 of [^verizon_open_omci].\n\nThe new ME introduced in G.988 [^G_988] do not have a description because G.988 abolished a summary description. In the corresponding ITU Clauses, all attrubits are described, and their purpose.\n\n\n| Managed entity ID | Managed entity                                                                     | Description G.984[^G_984_4]                                                                                                                                         | Clause G.984[^G_984_4] | Clause G.988[^G_988] | AT&T Open OMCI[^att_open_omci] | Verizon Open OMCI[^verizon_open_omci] | Required/optional G.984[^G_984_4] | Mandatory G.987[^G_987], G.9807.1[^G_9807_1] | Mandatory G.989[^G_988] | Mandatory G.986[^G_988] | Mandatory IEEE 802.3, 802.3av[^G_988] |\n| ----------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | -------------------- | ------------------------------ | ------------------------------------- | --------------------------------- | -------------------------------------------- | ----------------------- | ----------------------- | ------------------------------------- |\n| 1                 | ONT[^B-PON]                                                                        |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 2                 | ONU data                                                                           | Used for OMCI MIB management                                                                                                                                        | 9.1.3                  | 9.1.3                | 5.1.3                          | M                                     | R                                 | M                                            | M                       | M                       | M                                     |\n| 3                 | PON IF line cardholder                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 4                 | PON IF line card                                                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 5                 | Cardholder                                                                         | Used for a circuit pack plug-in slot. Can also represent a virtual cardholder to distinguish types of ports in an integrated ONT                                    | 9.1.5                  | 9.1.5                | 5.1.5                          | M                                     | CR                                | M                                            | M                       |                         | M                                     |\n| 6                 | Circuit pack                                                                       | Used for a plug-in circuit pack module. Can also represent a virtual circuit pack to distinguish types of ports in an integrated ONT                                | 9.1.6                  | 9.1.6                | 5.1.6                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 7                 | Software image                                                                     | Used for the software image of the ONT or its components that contain independently manageable software                                                             | 9.1.4                  | 9.1.4                | 5.1.4                          | M                                     | R                                 | M                                            | M                       |                         | M                                     |\n| 8                 | UNI[^B-PON]                                                                        |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 9                 | TC Adapter[^B-PON]                                                                 |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 10                | Physical path termination point ATM UNI                                            |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 11                | Physical path termination point Ethernet UNI                                       | Used for physical path termination point at the Ethernet UNI                                                                                                        | 9.5.1                  | 9.5.1                | 5.5.1                          | M                                     | CR                                |                                              |                         | M                       |                                       |\n| 12                | Physical path termination point CES UNI                                            | Used for physical path termination point at the CES UNI                                                                                                             | 9.8.1                  | 9.8.1                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 13                | Logical N × 64 kbit/s sub - port connection termination point (CTP)                | Used as logical interface for structured CES                                                                                                                        | 9.8.2                  | 9.8.2                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 14                | Interworking VCC termination point                                                 | Used for DSL ATM mode interworking                                                                                                                                  | 9.13.4                 | 9.13.4               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 15                | AAL 1 profile[^B-PON]                                                              |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 16                | AAL 5 profile                                                                      | Used for DSL ATM mode interworking                                                                                                                                  | 9.13.5                 | 9.13.5               |                                | No                                    | CR                                |                                              |                         |                         | N/A                                   |\n| 17                | AAL 1 protocol monitoring history data[^B-PON]                                     |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 18                | AAL 5 performance monitoring history data                                          | Used for DSL ATM mode interworking                                                                                                                                  | 9.13.6                 | 9.13.6               |                                | No                                    | CR                                |                                              |                         |                         | N/A                                   |\n| 19                | AAL 2 profile                                                                      |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 20                | (Intentionally left blank)                                                         |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 21                | (NOTE – In [^G_984_4] this was called CES service profile-G)                       | Used for CES services supported by the ONT                                                                                                                          | 9.8.3                  | 9.8.3                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 22                | (Reserved)                                                                         |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 23                | CES physical interface performance monitoring history data                         | Used for CES interface performance monitoring                                                                                                                       | 9.8.4                  | 9.8.4                |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 24                | Ethernet performance monitoring history data                                       | Used for Ethernet interface performance monitoring                                                                                                                  | 9.5.2                  | 9.5.2                | 5.5.2                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 25                | VP network CTP[^B-PON]                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 26                | ATM VP cross-connection                                                            |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 27                | Priority queue[^B-PON]                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 28                | DBR/CBR traffic descriptor                                                         |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 29                | UBR traffic descriptor                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 30                | SBR1/VBR1 traffic descriptor                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 31                | SBR2/VBR2 traffic descriptor                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 32                | SBR3/VBR3 traffic descriptor                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 33                | ABR traffic descriptor                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 34                | GFR traffic descriptor                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 35                | ABT/DT/IT traffic descriptor                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 36                | UPC disagreement monitoring history data[^B-PON]                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 37                | (Intentionally left blank)                                                         |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 38                | ANI [^B-PON]                                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 39                | PON TC adapter                                                                     |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 40                | PON physical path termination point                                                |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 41                | TC adapter protocol monitoring history data                                        |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 42                | Threshold data[^B-PON]                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 43                | Operator specific                                                                  |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 44                | Vendor specific                                                                    |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 45                | MAC bridge service profile                                                         | Used for MAC bridge supported by the ONT                                                                                                                            | 9.3.1                  | 9.3.1                | 5.3.1                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 46                | MAC bridge configuration data                                                      | Used for MAC bridge supported by the ONT                                                                                                                            | 9.3.2                  | 9.3.2                |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 47                | MAC bridge port configuration data                                                 | Used to organize and record data associated with a bridge port                                                                                                      | 9.3.4                  | 9.3.4                | 5.3.2                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 48                | MAC bridge port designation data                                                   | Used for MAC bridge supported by the ONT                                                                                                                            | 9.3.5                  | 9.3.5                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 49                | MAC bridge port filter table data                                                  | Used for MAC bridge supported by the ONT                                                                                                                            | 9.3.6                  | 9.3.6                |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 50                | MAC bridge port bridge table data                                                  | Used for MAC bridge supported by the ONT                                                                                                                            | 9.3.8                  | 9.3.8                |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 51                | MAC bridge performance monitoring history data                                     | Used for MAC bridge performance monitoring                                                                                                                          | 9.3.3                  | 9.3.3                |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 52                | MAC bridge port performance monitoring history data                                | Used for MAC bridge port performance monitoring                                                                                                                     | 9.3.9                  | 9.3.9                |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 53                | Physical path termination point POTS UNI                                           | Used for physical path trail termination point at the POTS UNI                                                                                                      | 9.9.1                  | 9.9.1                | 5.9.1                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 54                | Voice CTP                                                                          |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 55                | Voice PM history data                                                              |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 56                | AAL2 PVC profile[^B-PON]                                                           |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 57                | AAL2 CPS protocol monitoring history data[^B-PON]                                  |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 58                | Voice service profile                                                              | Used for voice                                                                                                                                                      | 9.9.6                  | 9.9.6                | 5.9.6                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 59                | LES service profile                                                                |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 60                | AAL2 SSCS parameter profile1                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 61                | AAL2 SSCS parameter profile2                                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 62                | VP performance monitoring history data                                             | Used for DSL ATM mode interworking                                                                                                                                  | 9.13.10                | 9.13.10              |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 63                | Traffic scheduler[^B-PON]                                                          |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 64                | T-CONT buffer                                                                      |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 65                | UBR+ traffic descriptor                                                            |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 66                | AAL2 SSCS protocol monitoring history data[^B-PON]                                 |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 67                | IP port configuration data                                                         | Used for IP port supported by the ONT                                                                                                                               | 9.4.3                  | n/a                  |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 68                | IP router service profile                                                          | Used for IP router supported by the ONT                                                                                                                             | 9.4.1                  | n/a                  |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 69                | IP router configuration data                                                       | Used for IP router supported by the ONT                                                                                                                             | 9.4.2                  | n/a                  |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 70                | IP router performance monitoring history data 1                                    | Used for IP router performance monitoring                                                                                                                           | 9.4.6                  | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 71                | IP router performance monitoring history data 2                                    | Used for IP router performance monitoring                                                                                                                           | 9.4.7                  | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 72                | ICMP performance monitoring history data 1                                         | Used for ICMP performance monitoring                                                                                                                                | 9.4.8                  | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 73                | ICMP performance monitoring history data 2                                         | Used for ICMP performance monitoring                                                                                                                                | 9.4.9                  | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 74                | IP route table                                                                     | Used for IP router supported by the ONT                                                                                                                             | 9.4.4                  | n/a                  |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 75                | IP static routes                                                                   | Used for IP router supported by the ONT                                                                                                                             | 9.4.5                  | n/a                  |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 76                | ARP service profile                                                                | Used for IP port supported by the ONT                                                                                                                               | 9.4.10                 | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 77                | ARP configuration data                                                             | Used for IP port supported by the ONT                                                                                                                               | 9.4.11                 | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 78                | VLAN tagging operation configuration data                                          |                                                                                                                                                                     | 9.3.12                 | 9.3.12               |                                | No                                    |                                   |                                              |                         |                         |                                       |\n| 79                | MAC bridge port filter pre - assign table                                          | Used for Ethernet type filtering                                                                                                                                    | 9.3.7                  | 9.3.7                |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 80                | Physical path termination point ISDN UNI                                           | Used for ISDN port supported by the ONT                                                                                                                             | 9.9.21                 | n/a                  |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 81                | (Reserved)                                                                         |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 82                | Physical path termination point video UNI                                          | Used for electrical video output port                                                                                                                               | 9.13.1                 | 9.13.1               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 83                | Physical path termination point LCT UNI                                            | Used for local craft terminal port                                                                                                                                  | 9.13.3                 | 9.13.3               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 84                | VLAN tagging filter data                                                           | Used for VLAN tagging                                                                                                                                               | 9.3.11                 | 9.3.11               | 5.3.4                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 85                | ONU[^B-PON]                                                                        |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 86                | ATM VC cross-connection                                                            |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 87                | VC network CTP[^B-PON]                                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 88                | VC PM history data                                                                 |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 89                | Ethernet performance monitoring history data 2                                     | Used for Ethernet performance monitoring                                                                                                                            | 9.5.3                  | 9.5.3                |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 90                | Physical path termination point video ANI                                          | Used for optical RF video input port                                                                                                                                | 9.13.2                 | 9.13.2               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 91                | Physical path termination point IEEE 802.11 UNI                                    | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.1                  | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 92                | IEEE 802.11 station management data 1                                              | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.2                  | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 93                | IEEE 802.11 station management data 2                                              | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.3                  | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 94                | IEEE 802.11 general purpose object                                                 | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.4                  | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 95                | IEEE 802.11 MAC and PHY operation and antenna data                                 | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.5                  | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 96                | IEEE 802.11 performance monitoring history data                                    | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.7                  | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 97                | IEEE 802.11 PHY FHSS DSSS IR tables                                                | Used for 802.11 interface supported by the ONT                                                                                                                      | 9.6.6                  | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 98                | Physical path termination point xDSL UNI part 1                                    | Used for the physical path termination point at an xDSL CO modem                                                                                                    | 9.7.1                  | 9.7.1                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 99                | Physical path termination point xDSL UNI part 2                                    | Used for the physical path termination point at an xDSL CO modem                                                                                                    | 9.7.2                  | 9.7.2                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 100               | xDSL line inventory and status data part 1                                         |                                                                                                                                                                     | 9.7.12                 | 9.7.12               |                                | No                                    |                                   |                                              |                         |                         |                                       |\n| 101               | xDSL line inventory and status data part 2                                         | Contains inventory and status information on an xDSL line                                                                                                           | 9.7.13                 | 9.7.13               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 102               | xDSL channel downstream status data                                                | Contains status on a downstream xDSL channel                                                                                                                        | 9.7.19                 | 9.7.19               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 103               | xDSL channel upstream status data                                                  | Contains status on an upstream xDSL channel                                                                                                                         | 9.7.20                 | 9.7.20               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 104               | xDSL line configuration profile part 1                                             | Contains line parameters for an xDSL line                                                                                                                           | 9.7.3                  | 9.7.3                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 105               | xDSL line configuration profile part 2                                             | Contains line parameters for an xDSL line                                                                                                                           | 9.7.4                  | 9.7.4                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 106               | xDSL line configuration profile part 3                                             | Contains line parameters for an xDSL line                                                                                                                           | 9.7.5                  | 9.7.5                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 107               | xDSL channel configuration profile                                                 | Contains configuration for an xDSL channel                                                                                                                          | 9.7.7                  | 9.7.7                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 108               | xDSL subcarrier masking downstream profile                                         | Contains masking information for the downstream subcarriers                                                                                                         | 9.7.8                  | 9.7.8                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 109               | xDSL subcarrier masking upstream profile                                           | Contains masking information for the upstream subcarriers                                                                                                           | 9.7.9                  | 9.7.9                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 110               | xDSL PSD mask profile                                                              | Contains PSD masking information                                                                                                                                    | 9.7.10                 | 9.7.10               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 111               | xDSL downstream radio frequency interference (RFI) bands profile                   | Contains information on the downstream RFI bands                                                                                                                    | 9.7.11                 | 9.7.11               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 112               | xDSL xTU-C performance monitoring history data                                     | Performance monitoring data for an xDSL xTU-C modem path                                                                                                            | 9.7.21                 | 9.7.21               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 113               | xDSL xTU-R performance monitoring history data                                     | Performance monitoring data for an xDSL xTU-R modem path                                                                                                            | 9.7.22                 | 9.7.22               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 114               | xDSL xTU-C channel performance monitoring history data                             | Performance monitoring data for an xDSL xTU-C channel                                                                                                               | 9.7.23                 | 9.7.23               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 115               | xDSL xTU-R channel performance monitoring history data                             | Performance monitoring data for an xDSL xTU-R channel                                                                                                               | 9.7.24                 | 9.7.24               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 116               | TC adaptor performance monitoring history data xDSL                                | Performance monitoring data for the xDSL ATM data path                                                                                                              | 9.7.25                 | 9.7.25               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 117               | Physical path termination point VDSL UNI (ITU-T G.993.1 VDSL1)                     |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 118               | VDSL VTU-O physical data                                                           |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 119               | VDSL VTU-R physical data                                                           |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 120               | VDSL channel data                                                                  |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 121               | VDSL line configuration profile                                                    |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 122               | VDSL channel configuration profile                                                 |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 123               | VDSL band plan configuration profile                                               |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 124               | VDSL VTU-O physical interface monitoring history data                              |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 125               | VDSL VTU-R physical interface monitoring history data                              |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 126               | VDSL VTU-O channel performance monitoring history data                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 127               | VDSL VTU-R channel performance monitoring history data                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 128               | Video return path service profile                                                  | Used for video return path management                                                                                                                               | 9.13.7                 | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 129               | Video return path performance monitoring history data                              | Used for video return path management                                                                                                                               | 9.13.8                 | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 130               | IEEE 802.1p mapper service profile                                                 | Used for 802.1p priority Ethernet UNI                                                                                                                               | 9.3.10                 | 9.3.10               | 5.3.3                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 131               | OLT-G                                                                              | Used for OLT identification for interoperability facilitation                                                                                                       | 9.12.2                 | 9.12.2               | 5.12.2                         | M                                     | O                                 |                                              |                         |                         |                                       |\n| 132               | Multicast interworking VCC termination point                                       |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 133               | ONU power shedding                                                                 | Used to control the power shedding service                                                                                                                          | 9.1.7                  | 9.1.7                | 5.1.7                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 134               | IP host config data                                                                | Used to define the Internet protocol service that may be used with a MAC bridge port. Member of IPHostData group                                                    | 9.4.12                 | 9.4.1                | 5.4.1                          |                                       | CR                                |                                              |                         |                         |                                       |\n| 135               | IP host performance monitoring history data                                        | Used to hold PM counters and alarms for the IP host. Member of IPHostData group                                                                                     | 9.4.13                 | 9.4.2                | 5.4.2                          |                                       | O                                 |                                              |                         |                         |                                       |\n| 136               | TCP/UDP config data                                                                | Used for the TCP or UDP configuration for a TCP/UDP service. Member of IPHostData group                                                                             | 9.4.14                 | 9.4.3                | 5.4.3                          |                                       | CR                                |                                              |                         |                         |                                       |\n| 137               | Network address                                                                    | Used to bind a network address (URI, IP address) to its associated security method. Member of IPHostData group                                                      | 9.12.3                 | 9.12.3               | 5.12.3                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 138               | VoIP config data                                                                   | Used to discover VoIP signalling protocols supported and select a VoIP signalling to use. Also used to select a VoIP configuration method. Member of VoIPData group | 9.9.18                 | 9.9.18               | 5.9.12                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 139               | VoIP voice CTP                                                                     | Used for VoIP voice channel termination point. Member of VoIPData group                                                                                             | 9.9.4                  | 9.9.4                | 5.9.4                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 140               | Call control performance monitoring history data                                   | Used for call control performance monitoring history. Member of VoIPData group                                                                                      | 9.9.12                 | 9.9.12               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 141               | VoIP line status                                                                   | Used for VoIP line status that relates to a POTS port. Member of VoIPData group                                                                                     | 9.9.11                 | 9.9.11               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 142               | VoIP media profile                                                                 | Used to define codec and other media selection criteria. Member of VoIPData group                                                                                   | 9.9.5                  | 9.9.5                | 5.9.5                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 143               | RTP profile data                                                                   | Used for RTP configuration for VoIP service                                                                                                                         | 9.9.7                  | 9.9.7                | 5.9.7                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 144               | RTP performance monitoring history data                                            | Used to hold the last completed 15 minutes interval PM data for RTP. Member of VoIPData group                                                                       | 9.9.13                 | 9.9.13               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 145               | Network dial plan table                                                            | Used to support network-defined dial plans. Member of VoIPData group                                                                                                | 9.9.10                 | 9.9.10               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 146               | VoIP application service profile                                                   | Used for VoIP calling feature services. Member of VoIPData group                                                                                                    | 9.9.8                  | 9.9.8                |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 147               | VoIP feature access codes                                                          | Used to define feature access codes for a POTS port. Member of VoIPData group                                                                                       | 9.9.9                  | 9.9.9                |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 148               | Authentication security method                                                     | Used for the user id/password configuration to associate an IP session between the client and destination server                                                    | 9.12.4                 | 9.12.4               | 5.12.4                         | M                                     | O                                 |                                              |                         |                         |                                       |\n| 149               | SIP config portal                                                                  | Used to view SIP configuration when the IP path is being used to manage SIP. Member of SIPrelatedData group                                                         | 9.9.19                 | 9.9.19               |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 150               | SIP agent config data                                                              | Used to define a VoIP SIP agent configuration. Member of SIPrelatedData group                                                                                       | 9.9.3                  | 9.9.3                | 5.9.3                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 151               | SIP agent performance monitoring history data                                      | Used for statistics for the VoIP SIP agent. Member of SIPrelatedData group                                                                                          | 9.9.14                 | 9.9.14               | 5.9.8                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 152               | SIP call initiation performance monitoring history data                            | Used for statistics for the VoIP SIP agent. Member of SIPrelatedData group                                                                                          | 9.9.15                 | 9.9.15               | 5.9.9                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 153               | SIP user data                                                                      | Used for user (subscriber) specific SIP data. Member of SIPrelatedData group                                                                                        | 9.9.2                  | 9.9.2                | 5.9.2                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 154               | MGC config portal                                                                  | Used to view H.248 configuration when the IP path is being used to manage H.248. Member of H248relatedData group                                                    | 9.9.20                 | 9.9.20               |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 155               | MGC config data                                                                    | Used for configuration data associated with an MGC client. Member of H248relatedData group                                                                          | 9.9.16                 | 9.9.16               | 5.9.10                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 156               | MGC performance monitoring history data                                            | Used for run-time attributes and statistics associated with an active MGC client. Member of H248relatedData group                                                   | 9.9.17                 | 9.9.17               | 5.9.11                         | M                                     | O                                 |                                              |                         |                         |                                       |\n| 157               | Large string                                                                       | Used to hold a character string larger than 25 bytes and up to 375 bytes                                                                                            | 9.12.5                 | 9.12.5               | 5.12.5                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 158               | ONU remote debug                                                                   | Used to allow remote debugging of an ONT                                                                                                                            | 9.1.12                 | 9.1.12               | 5.1.8                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 159               | Equipment protection profile                                                       | Defines equipment protection groups                                                                                                                                 | 9.1.11                 | 9.1.11               |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 160               | Equipment extension package                                                        | Used for additional attributes that may be associated with an ONT or cardholder                                                                                     | 9.1.9                  | 9.1.9                |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 161               | Port-mapping package[^B-PON] (use 297 for G-PON)                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 162               | Physical path termination point MoCA UNI                                           | Used for the physical path termination point for MoCA interfaces                                                                                                    | 9.10.1                 | 9.10.1               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 163               | MoCA Ethernet performance monitoring history data                                  | Performance monitoring data for the Ethernet layer on the MoCA interface                                                                                            | 9.10.2                 | 9.10.2               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 164               | MoCA interface performance monitoring history data                                 | Performance monitoring data for the physical layer on the MoCA interface                                                                                            | 9.10.3                 | 9.10.3               |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 165               | VDSL2 line configuration extensions                                                | Contains xDSL attributes unique to VDSL2 (G.993.2)                                                                                                                  | 9.7.6                  | 9.7.6                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 166               | xDSL line inventory and status data part 3                                         | Contains additional test and status attributes for xDSL lines                                                                                                       | 9.7.14                 | 9.7.14               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 167               | xDSL line inventory and status data part 4                                         | Contains additional test and status attributes for xDSL lines                                                                                                       | 9.7.15                 | 9.7.15               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 168               | VDSL2 line inventory and status data part 1                                        | Contains additional test and status attributes for xDSL lines, specifically, extensions for VDSL2                                                                   | 9.7.16                 | 9.7.16               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 169               | VDSL2 line inventory and status data part 2                                        | Contains additional test and status attributes for xDSL lines, specifically, extensions for VDSL2                                                                   | 9.7.17                 | 9.7.17               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 170               | VDSL2 line inventory and status data part 3                                        | Contains additional test and status attributes for xDSL lines, specifically, extensions for VDSL2                                                                   | 9.7.18                 | 9.7.18               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 171               | Extended VLAN tagging operation configuration data                                 | Contains configuration parameters for enhanced VLAN operations, including adding, removing and changing multiple tags                                               | 9.3.13                 | 9.3.13               | 5.3.5                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 172-239           | Reserved for future [^B-PON] managed entities                                      |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 240-255           | Reserved for vendor-specific managed entities                                      |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 256               | ONU-G (NOTE – In [^G_984_4] this was called ONT-G)                                 | Used for ONT equipment management                                                                                                                                   | 9.1.1                  | 9.1.2                | 5.1.1                          | M                                     | R                                 | M                                            | M                       |                         | M                                     |\n| 257               | ONU2-G (NOTE – In [^G_984_4] this was called ONT2-G)                               | Used for ONT equipment management                                                                                                                                   | 9.1.2                  | 9.1.1                | 5.1.2                          | M                                     | R                                 | M                                            | M                       |                         | M                                     |\n| 258               | ONU-G (deprecated – note that the name is re-used for code point 256)              |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 259               | ONU2-G (deprecated – note that the name is re-used for code point 257)             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 260               | PON IF line card-G                                                                 |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 261               | PON TC adapter-G                                                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 262               | T-CONT                                                                             | Used for DBA                                                                                                                                                        | 9.2.2                  | 9.2.2                | 5.2.2                          | M                                     | R                                 | M                                            | M                       |                         | M                                     |\n| 263               | ANI-G                                                                              | Used for ANI management                                                                                                                                             | 9.2.1                  | 9.2.1                | 5.2.1                          | M                                     | R                                 | M                                            | M                       |                         | M                                     |\n| 264               | UNI-G                                                                              | Used for user network interface for GEM service                                                                                                                     | 9.12.1                 | 9.12.1               | 5.12.1                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 265               | ATM interworking VCC termination point                                             |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 266               | GEM interworking termination point                                                 | Used for non-ATM UNIs and GEM-based connections                                                                                                                     | 9.2.4                  | 9.2.4                | 5.2.4                          | M                                     | CR                                | M                                            | M                       |                         | M/E                                   |\n| 267               | GEM port performance monitoring history data (obsolete)                            | Used for GEM port performance monitoring                                                                                                                            | 9.2.6                  | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 268               | GEM port network CTP                                                               | Used for GEM port termination                                                                                                                                       | 9.2.3                  | 9.2.3                | 5.2.3                          | M                                     | CR                                | M                                            | M                       |                         | M/E                                   |\n| 269               | VP network CTP (NOTE – In [^G_984_4] this was called VP network CTP-G)             | Used for DSL ATM mode interworking                                                                                                                                  | 9.13.9                 | 9.13.9               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 270               | VC network CTP-G                                                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 271               | GAL TDM profile (deprecated)                                                       | Used when the ONT supports GAL TDM                                                                                                                                  | 9.2.9                  | n/a                  |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 272               | GAL Ethernet profile                                                               | Used when the ONT supports GAL Ethernet                                                                                                                             | 9.2.7                  | 9.2.7                | 5.2.6                          | M                                     | O                                 |                                              |                         |                         | N/A                                   |\n| 273               | Threshold data 1                                                                   | Used for PM threshold values                                                                                                                                        | 9.12.6                 | 9.12.6               | 5.12.6                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 274               | Threshold data 2                                                                   | Used for PM threshold values                                                                                                                                        | 9.12.7                 | 9.12.7               | 5.12.7                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 275               | GAL TDM performance monitoring history data (deprecated)                           | Used when GAL TDM layer performance monitoring is supported                                                                                                         | 9.2.10                 | n/a                  |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 276               | GAL Ethernet performance monitoring history data                                   | Used when GAL Ethernet layer performance monitoring is supported                                                                                                    | 9.2.8                  | 9.2.8                |                                | M                                     | O                                 |                                              |                         |                         | N/A                                   |\n| 277               | Priority queue (NOTE – In [^G_984_4] this was called Priority queue-G)             | Used for ONTs that support priority queues to multiplex ATM or GEM traffic flows                                                                                    | 9.11.1                 | 9.2.10               | 5.2.8                          |                                       | CR                                |                                              |                         |                         |                                       |\n| 278               | Traffic scheduler (NOTE – In [^G_984_4] this was called Traffic scheduler-G)       | Used for DBA                                                                                                                                                        | 9.11.2                 | 9.2.11               | 5.2.9                          |                                       | CR                                |                                              |                         |                         |                                       |\n| 279               | Protection data                                                                    | Used for PON protection                                                                                                                                             | 9.1.10                 | 9.1.10               |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 280               | Traffic descriptor (NOTE – In [^G_984_4] this was called GEM traffic descriptor)   | Used for GEM-based connections                                                                                                                                      | 9.11.3                 | 9.2.12               | 5.2.10                         |                                       | CR                                |                                              |                         |                         |                                       |\n| 281               | Multicast GEM interworking termination point                                       | Used to manage multicasting support for GEM connection                                                                                                              | 9.2.5                  | 9.2.5                | 5.2.5                          | M                                     | CR                                |                                              |                         |                         |                                       |\n| 282               | Pseudowire termination point                                                       | Used when the ONT supports the pseudowire function                                                                                                                  | 9.8.5                  | 9.8.5                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 283               | RTP pseudowire parameters                                                          | Used when the ONT supports the pseudowire function                                                                                                                  | 9.8.6                  | 9.8.6                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 284               | Pseudowire maintenance profile                                                     | Used when the ONT supports the pseudowire function                                                                                                                  | 9.8.7                  | 9.8.7                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 285               | Pseudowire performance monitoring history data                                     | Used when the ONT supports the pseudowire function                                                                                                                  | 9.8.8                  | 9.8.8                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 286               | Ethernet flow termination point                                                    | Used when the ONT supports the pseudowire function over layer 2                                                                                                     | 9.8.9                  | 9.8.9                |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 287               | OMCI                                                                               | Used when OMCI self-description is supported                                                                                                                        | 9.12.8                 | 9.12.8               | 5.12.8                         | No                                    | CR                                |                                              |                         |                         |                                       |\n| 288               | Managed entity                                                                     | Used when OMCI self-description is supported                                                                                                                        | 9.12.9                 | 9.12.9               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 289               | Attribute                                                                          | Used when OMCI self-description is supported                                                                                                                        | 9.12.10                | 9.12.10              |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 290               | Dot1X port extension package                                                       | Used for 802.1X control                                                                                                                                             | 9.3.14                 | 9.3.14               | 5.3.6                          | No                                    | CR                                |                                              |                         |                         |                                       |\n| 291               | Dot1X configuration profile                                                        | Used for 802.1X control                                                                                                                                             | 9.3.15                 | 9.3.15               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 292               | Dot1X performance monitoring history data                                          | Used for 802.1X control                                                                                                                                             | 9.3.16                 | 9.3.16               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 293               | Radius performance monitoring history data                                         | Used for 802.1X radius client PM                                                                                                                                    | 9.3.17                 | 9.3.17               |                                | No                                    | CR                                |                                              |                         |                         |                                       |\n| 294               | TU CTP                                                                             | Organizes data that describes the VC path adaptation processing functions of the ONT for SDH services                                                               | 9.8.10                 | n/a                  |                                |                                       | CR                                |                                              |                         |                         |                                       |\n| 295               | TU performance monitoring history data                                             | Performance monitoring data collected as a result of TU connection monitoring                                                                                       | 9.8.11                 | n/a                  |                                |                                       | O                                 |                                              |                         |                         |                                       |\n| 296               | Ethernet performance monitoring history data 3                                     | Used for Ethernet performance monitoring (RMON)                                                                                                                     | 9.5.4                  | 9.5.4                |                                | No                                    | O                                 |                                              |                         |                         |                                       |\n| 297               | Port-mapping package (NOTE – In [^G_984_4] this was called Port mapping package-G) | Used to map heterogeneous ports to an equipment entity                                                                                                              | 9.1.8                  | 9.1.8                |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 298               | Dot1 rate limiter                                                                  | Provides for limiting and policing upstream traffic                                                                                                                 | 9.3.18                 | 9.3.18               |                                | M                                     | CR                                |                                              |                         |                         |                                       |\n| 299               | Dot1ag maintenance domain                                                          | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.19                 | 9.3.19               | 5.3.7                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 300               | Dot1ag maintenance association                                                     | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.20                 | 9.3.20               | 5.3.8                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 301               | Dot1ag default MD level                                                            | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.21                 | 9.3.21               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 302               | Dot1ag MEP                                                                         | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.22                 | 9.3.22               | 5.3.9                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 303               | Dot1ag MEP status                                                                  | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.23                 | 9.3.23               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 304               | Dot1ag MEP CCM database                                                            | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.24                 | 9.3.24               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 305               | Dot1ag CFM stack                                                                   | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.25                 | 9.3.25               | 5.3.10                         | M                                     | O                                 |                                              |                         |                         |                                       |\n| 306               | Dot1ag chassis - management info                                                   | Supports 802.1ag configuration fault management                                                                                                                     | 9.3.26                 | 9.3.26               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 307               | Octet string                                                                       | Allows for strings of up to 375 arbitrary octet values                                                                                                              | 9.12.11                | 9.12.11              |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 308               | General purpose buffer                                                             | Used to return large blocks of data; structure defined with each specific application                                                                               | 9.12.12                | 9.12.12              |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 309               | Multicast operations profile                                                       | Used to manage multicast at the ONT                                                                                                                                 | 9.3.27                 | 9.3.27               | 5.3.11                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 310               | Multicast subscriber config info                                                   | Used to manage multicast at the ONT                                                                                                                                 | 9.3.28                 | 9.3.28               | 5.3.12                         | M                                     | CR                                |                                              |                         |                         |                                       |\n| 311               | Multicast subscriber monitor                                                       | Used to manage multicast at the ONT                                                                                                                                 | 9.3.29                 | 9.3.29               |                                | M                                     | O                                 |                                              |                         |                         |                                       |\n| 312               | FEC performance monitoring history data                                            | Performance monitoring data for FEC on an ANI-G                                                                                                                     | 9.2.11                 | 9.2.9                | 5.2.7                          | M                                     | O                                 |                                              |                         |                         |                                       |\n| 313               | RE ANI-G                                                                           |                                                                                                                                                                     | n/a                    | 9.14.1               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 314               | Physical path termination point RE UNI                                             |                                                                                                                                                                     | n/a                    | 9.14.2               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 315               | RE upstream amplifier                                                              |                                                                                                                                                                     | n/a                    | 9.14.3               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 316               | RE downstream amplifier                                                            |                                                                                                                                                                     | n/a                    | 9.14.4               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 317               | RE config portal                                                                   |                                                                                                                                                                     | n/a                    | 9.14.5               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 318               | File transfer controller                                                           |                                                                                                                                                                     | n/a                    | 9.12.13              |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 319               | CES physical interface performance monitoring history data 2                       |                                                                                                                                                                     | n/a                    | 9.8.12               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 319               | CES physical interface performance monitoring history data 2                       |                                                                                                                                                                     | n/a                    | 9.8.12               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 320               | CES physical interface performance monitoring history data 3                       |                                                                                                                                                                     | n/a                    | 9.8.13               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 321               | Ethernet frame performance monitoring history data downstream                      |                                                                                                                                                                     | n/a                    | 9.3.31               | 5.3.13                         |                                       |                                   |                                              |                         |                         |                                       |\n| 322               | Ethernet frame performance monitoring history data upstream                        |                                                                                                                                                                     | n/a                    | 9.3.30               | 5.3.14                         |                                       |                                   |                                              |                         |                         |                                       |\n| 323               | VDSL2 line configuration extensions 2                                              |                                                                                                                                                                     | n/a                    | 9.7.26               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 324               | xDSL impulse noise monitor performance monitoring history data                     |                                                                                                                                                                     | n/a                    | 9.7.27               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 325               | xDSL line inventory and status data part 5                                         |                                                                                                                                                                     | n/a                    | 9.7.28               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 326               | xDSL line inventory and status data part 6                                         |                                                                                                                                                                     | n/a                    | 9.7.29               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 327               | xDSL line inventory and status data part 7                                         |                                                                                                                                                                     | n/a                    | 9.7.30               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 328               | RE common amplifier parameters                                                     |                                                                                                                                                                     | n/a                    | 9.14.6               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 329               | Virtual Ethernet interface point                                                   |                                                                                                                                                                     | n/a                    | 9.5.5                | 5.5.3                          |                                       |                                   |                                              |                         |                         |                                       |\n| 330               | Generic status portal                                                              |                                                                                                                                                                     | n/a                    | 9.12.14              |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 331               | ONU-E                                                                              |                                                                                                                                                                     | n/a                    | 9.1.13               |                                |                                       |                                   |                                              |                         | M                       | N/A                                   |\n| 332               | Enhanced security control                                                          |                                                                                                                                                                     | n/a                    | 9.13.11              | 5.13.1                         |                                       |                                   |                                              |                         |                         |                                       |\n| 333               | MPLS pseudowire termination point                                                  |                                                                                                                                                                     | n/a                    | 9.8.14               | 5.13.1                         |                                       |                                   |                                              |                         |                         |                                       |\n| 334               | Ethernet frame extended PM                                                         |                                                                                                                                                                     | n/a                    | 9.3.32               |                                |                                       |                                   | 9.3.34                                       |                         |                         |                                       |\n| 335               | Simple network management protocol (SNMP) configuration data                       |                                                                                                                                                                     | n/a                    | 9.12.15              | 5.12.9                         |                                       |                                   |                                              |                         |                         |                                       |\n| 336               | ONU dynamic power management control                                               |                                                                                                                                                                     | n/a                    | 9.1.14               | 5.1.9                          |                                       |                                   |                                              |                         |                         |                                       |\n| 337               | PW ATM configuration data                                                          |                                                                                                                                                                     | n/a                    | 9.8.15               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 338               | PW ATM performance monitoring history data                                         |                                                                                                                                                                     | n/a                    | 9.8.16               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 339               | PW Ethernet configuration data                                                     |                                                                                                                                                                     | n/a                    | 9.8.17               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 340               | BBF TR-069 management server                                                       |                                                                                                                                                                     | n/a                    | 9.12.16              | 5.12.10                        |                                       |                                   |                                              |                         |                         |                                       |\n| 341               | GEM port network CTP performance monitoring history data                           |                                                                                                                                                                     | n/a                    | 9.2.13               | 5.2.11                         |                                       |                                   |                                              |                         |                         | N/A                                   |\n| 342               | TCP/UDP performance monitoring history data                                        |                                                                                                                                                                     | n/a                    | 9.4.4                |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 343               | Energy consumption performance monitoring history data                             |                                                                                                                                                                     | n/a                    | 9.2.14               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 344               | XG-PON TC performance monitoring history data                                      |                                                                                                                                                                     | n/a                    | 9.2.15               | 5.2.12                         |                                       |                                   |                                              |                         |                         |                                       |\n| 345               | XG-PON downstream management performance monitoring history data                   |                                                                                                                                                                     | n/a                    | 9.2.16               | 5.2.13                         |                                       |                                   |                                              |                         |                         |                                       |\n| 346               | XG-PON upstream management performance monitoring history data                     |                                                                                                                                                                     | n/a                    | 9.2.17               | 5.2.14                         |                                       |                                   |                                              |                         |                         |                                       |\n| 347               | IPv6 host config data                                                              |                                                                                                                                                                     | n/a                    | 9.4.5                |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 348               | MAC bridge port ICMPv6 process pre-assign table                                    |                                                                                                                                                                     | n/a                    | 9.3.33               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 349               | Power over Ethernet (PoE) control                                                  |                                                                                                                                                                     | n/a                    | 9.5.6                | 5.5.4                          |                                       |                                   |                                              |                         |                         |                                       |\n| 400               | Ethernet pseudowire parameters                                                     |                                                                                                                                                                     | n/a                    | 9.8.18               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 401               | Physical path termination point RS232/RS485 UNI                                    |                                                                                                                                                                     | n/a                    | 9.15.1               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 402               | RS232/RS485 port operation configuration data                                      |                                                                                                                                                                     | n/a                    | 9.15.3               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 403               | RS232/RS485 performance monitoring history data                                    |                                                                                                                                                                     | n/a                    | 9.15.2               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 404               | L2 multicast GEM interworking termination point                                    |                                                                                                                                                                     | n/a                    | 9.2.18               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 405               | ANI-E                                                                              |                                                                                                                                                                     | n/a                    | 9.2.19               |                                |                                       |                                   |                                              |                         |                         | M                                     |\n| 406               | EPON downstream performance monitoring configuration                               |                                                                                                                                                                     | n/a                    | 9.2.20               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 407               | SIP agent config data 2                                                            |                                                                                                                                                                     | n/a                    | 9.9.21               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 408               | xDSL xTU-C performance monitoring history data part 2                              |                                                                                                                                                                     | n/a                    | 9.7.31               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 409               | PTM performance monitoring history data xDSL                                       |                                                                                                                                                                     | n/a                    | 9.7.32               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 410               | VDSL2 line configuration extensions 3                                              |                                                                                                                                                                     | n/a                    | 9.7.33               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 411               | Vectoring line configuration extensions                                            |                                                                                                                                                                     | n/a                    | 9.7.34               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 412               | xDSL channel configuration profile part 2                                          |                                                                                                                                                                     | n/a                    | 9.7.35               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 413               | xTU data gathering configuration                                                   |                                                                                                                                                                     | n/a                    | 9.7.36               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 414               | xDSL line inventory and status data part 8                                         |                                                                                                                                                                     | n/a                    | 9.7.37               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 415               | VDSL2 line inventory and status data part 4                                        |                                                                                                                                                                     | n/a                    | 9.7.38               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 416               | Vectoring line inventory and status data                                           |                                                                                                                                                                     | n/a                    | 9.7.39               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 417               | Data gathering line test, diagnostic and status                                    |                                                                                                                                                                     | n/a                    | 9.7.40               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 419               | EFM bonding group                                                                  |                                                                                                                                                                     | n/a                    | 9.7.41               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 420               | EFM bonding link                                                                   |                                                                                                                                                                     | n/a                    | 9.7.42               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 421               | EFM bonding group performance monitoring history data                              |                                                                                                                                                                     | n/a                    | 9.7.43               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 422               | EFM bonding group performance monitoring history data part 2                       |                                                                                                                                                                     | n/a                    | 9.7.44               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 423               | EFM bonding link performance monitoring history data                               |                                                                                                                                                                     | n/a                    | 9.7.45               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 424               | EFM bonding port performance monitoring history data                               |                                                                                                                                                                     | n/a                    | 9.7.46               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 425               | EFM bonding port performance monitoring history data part 2                        |                                                                                                                                                                     | n/a                    | 9.7.47               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 426               | Ethernet frame extended PM 64 bit                                                  |                                                                                                                                                                     | n/a                    | 9.3.34               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 427               | Physical path termination point xDSL UNI part 3                                    |                                                                                                                                                                     | n/a                    | 9.7.48               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 428               | FAST line configuration profile part 1                                             |                                                                                                                                                                     | n/a                    | 9.7.49               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 429               | FAST line configuration profile part 2                                             |                                                                                                                                                                     | n/a                    | 9.7.50               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 430               | FAST line configuration profile part 3                                             |                                                                                                                                                                     | n/a                    | 9.7.51               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 431               | FAST line configuration profile part 4                                             |                                                                                                                                                                     | n/a                    | 9.7.52               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 432               | FAST channel configuration profile                                                 |                                                                                                                                                                     | n/a                    | 9.7.53               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 433               | FAST data path configuration profile                                               |                                                                                                                                                                     | n/a                    | 9.7.54               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 434               | FAST vectoring line configuration extensions                                       |                                                                                                                                                                     | n/a                    | 9.7.55               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 435               | FAST line inventory and status data                                                |                                                                                                                                                                     | n/a                    | 9.7.56               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 436               | FAST line inventory and status data part 2                                         |                                                                                                                                                                     | n/a                    | 9.7.57               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 437               | FAST xTU-C performance monitoring history data                                     |                                                                                                                                                                     | n/a                    | 9.7.58               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 438               | FAST xTU-R performance monitoring history data                                     |                                                                                                                                                                     | n/a                    | 9.7.59               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 439               | OpenFlow config data                                                               |                                                                                                                                                                     | n/a                    | 9.12.18              |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 440               | Time Status Message                                                                |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 441               | ONU3-G                                                                             |                                                                                                                                                                     | n/a                    | 9.1.15               |                                |                                       |                                   |                                              | M                       |                         |                                       |\n| 442               | TWDM System Profile managed entity                                                 |                                                                                                                                                                     | n/a                    | 9.16.1               |                                |                                       |                                   |                                              | M                       |                         |                                       |\n| 443               | TWDM channel managed entity                                                        |                                                                                                                                                                     | n/a                    | 9.16.2               |                                |                                       |                                   |                                              | M                       |                         |                                       |\n| 444               | TWDM channel PHY/LODS performance monitoring history data                          |                                                                                                                                                                     | n/a                    | 9.16.3               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 445               | TWDM channel XGEM performance monitoring history data                              |                                                                                                                                                                     | n/a                    | 9.16.4               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 446               | TWDM channel PLOAM performance monitoring history data part 1                      |                                                                                                                                                                     | n/a                    | 9.16.5               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 447               | TWDM channel PLOAM performance monitoring history data part 2                      |                                                                                                                                                                     | n/a                    | 9.16.6               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 448               | TWDM channel PLOAM performance monitoring history data part 3                      |                                                                                                                                                                     | n/a                    | 9.16.7               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 449               | TWDM channel tuning performance monitoring history data part 1                     |                                                                                                                                                                     | n/a                    | 9.16.8               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 450               | TWDM channel tuning performance monitoring history data part 2                     |                                                                                                                                                                     | n/a                    | 9.16.9               |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 451               | TWDM channel tuning performance monitoring history data part 3                     |                                                                                                                                                                     | n/a                    | 9.16.10              |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 452               | TWDM channel OMCI performance monitoring history data                              |                                                                                                                                                                     | n/a                    | 9.16.11              |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 350-399           | Reserved for vendor-specific use                                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 453-65279         | Reserved for future standardization                                                |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n| 65280-65535       | Reserved for vendor-specific use                                                   |                                                                                                                                                                     |                        |                      |                                |                                       |                                   |                                              |                         |                         |                                       |\n\n\n---\n\n[^G_984_1]: *Gigabit-capable passive optical networks (GPON): General characteristics* https://www.itu.int/rec/T-REC-G.984.1\n[^G_988]: *G.988: ONU management and control interface (OMCI) specification* https://www.itu.int/rec/T-REC-G.988\n[^G_984_4]: *G.984.4: Gigabit-capable Passive Optical Networks (G-PON): ONT management and control interface specification* https://www.itu.int/rec/T-REC-G.988\n[^G_987]: *G.987: 10-Gigabit-capable passive optical network (XG-PON) systems: Definitions, abbreviations and acronyms* https://www.itu.int/rec/T-REC-G.987\n[^G_9807_1]: *G.9807.1: 10-Gigabit-capable symmetric passive optical network (XGS-PON)* https://www.itu.int/rec/T-REC-G.9807.1\n[^att_open_omci]: *AT&T Open OMCI Specification, Edition 3.0, 6/23/17*\n[^verizon_open_omci]: *Verizon OpenOMCI Specification, Version 1.00 June 30, 2017* \n[^B-PON]: MIB for legacy B-PON\n\n"
  },
  {
    "path": "_gpon/ont.md",
    "content": "---\ntitle: GPON ONT Chipset\nhas_children: false\nnav_order: 2\nlayout: default\n---\n\n\n# Major Chipset Manufacturers\n\nCurrently, there are only a few main GPON chipset vendors:\n\n- Realtek:\n    * RTL9601 (for ONT)\n        - RTL9601B  \n        - RTL9601CI (HSGMII)\n        - RTL9601D (HSGMII)\n    * RTL9602/RTL9603 series (for routers with integrated PON)\n    * Cortina QWCS8032E\n- Lantiq:\n    * PEB98035 (HSGMII)\n    * PEB98036\n- ZTE:\n    * FA626TE \n    * ZX279110a1\n    * ZX279125\n- HiSilicon (Huawei)\n    * SD5116\n- Marvell \n    * 88F6601\n- Broadcom\n    * BCM68 series\n- MediaTek/Econet\n    * MT/EN752 series (EN7520T HSGMII)\n\n## Realtek Chipsets\n\nHSGMII chipsets are relatively recent, they became more common starting in 2020, and are used in many ONTs. Realtek offers an official SDK, Luna SDK, which offers very good performance in queue management, unfortunately it is not used by all devices based on these chipsets.\n\n## Lantiq Chipsets\n\nUnfortunately Lantiq no longer exists as it has been bought out and dismembered by Intel. This purchase was a huge deal as at the time Lantiq was at the forefront of the GPON and xDSL chipset market.\nThe GPON part of Lantiq ended up in `/dev/null`, while the XGS-PON sector ended up in the hands of MaxLinear and the whole Wi-Fi part remained in the hands of Intel itself.\n\nThe last produced batches of these SFPs date back to 2020/2021. All OEMs are currently migrating to Realtek.\n\n{% include alert.html content=\"Playing with ONTs can cause your serial number/PLOAM password to be banned and faults to the optics, ONTs and OLTs. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"You can also help us with the content of this site, on each page you will find a button to edit on GitHub.\" alert=\"Tip\"  icon=\"svg-info\" color=\"green\" %}\n"
  },
  {
    "path": "_gpon/pptp_veip.md",
    "content": "---\ntitle: GPON PPTP and VEIP \nhas_children: false\nnav_order: 3\nlayout: default\n---\n\nONTs are the terminating elements of every PON network and play an essential role in the PON architecture. The ONT converts the optical media into an electrical interface and takes care of authenticating, monitoring, processing as well as managing all matters related to the GPON tree. Often these devices are installed directly in users' homes[^hsgp_hg_sfu].\n\nThree layers can be identified in the ONT: core layer, service layer and public layer.\n- The core layer provides multiplexing and the optical interface;\n- the service layer refers mainly to the user port;\n- the public layer provides power and maintenance management[^hsgp_hg_sfu].\n\nONTs can connect to various terminal devices, such as set-top boxes, wireless routers, TVs, etc., and perform photoelectric conversion, maintenance and monitoring functions. According to the application, ONTs can be divided into six types, namely[^hsgp_hg_sfu]:\n- SFU (Single Family Unit) ONT\n- HGU (Home Gateway Unit) ONT \n- MDU (Multi-Dwelling Unit) ONT \n- SBU (Single Business Unit) ONT \n- MTU (Multi-Tenant Unit) ONT\n- CBU (Cellular Backhaul Unit) ONT\n\nHowever, only SFU ONTs and HGU ONTs are used by end-users in practical application.\n\nHGU ONTs are a home gateway with a PON uplink interface; they're designed for use in single home units. HGU ONTs integrate the functions of ONTs and RGs to realize more complex control and management and also provide Ethernet / IP, VoIP, optional CATV services and routing mode (firewall and NAT). Usually HGU ONTs have Ethernet interfaces, but POTS, WLAN, USB and CATV RF interfaces are also available. The HGU is a Layer III device[^hsgp_hg_sfu].\n\nThe ONT SFU type can be understood as a simple Layer II device, like an L2 switch or media converter. It usually has a single Ethernet port and it is exclusively an optical-electric converter. It simply and transparently transports traffic from the PON interface to the Ethernet port(s) of the customer's ONT. No routing or VoIP functionality is assumed for this SFU type. For SFUs, a simple service configuration from the OLT station is used. SFU devices are usually cheaper, because additional services (routing, telephony, TV) are not implemented.\n\nWithin the GPON OMCI standards we can find two types of interfaces: VEIP and PPTP. These virtual interfaces are the boundary between the GPON/OMCI part and the non-GPON/Ethernet part[^G_984_4],[^G_988],[^hsgp_hg_sfu].\n\nONTs will report VEIP or PPTP (Physical Path Termination Point) when MIB 11 or 329 is uploaded according to the type of the device. Only one VEIP is allowed in a HGU and VEIP is not available for SFU devices. OLTs determine the ONT type based on the ONT Type attribute in ME Capability.\n\n# Physical Path Termination Point (PPTP/Ethernet UNI - MIB 11)\n\nPPTP/EthUni, on the other hand, is designed for transparent L2 bridging, potentially each with its own VLAN. The OLT is responsible of the provisioning of VLANs and LAN Ports[^nanomad_fc],[^anime_rtl960x].\n\nThe SFU type ONT device is configured and controlled completely remotely by the OLT via the OMCI management interface. Generally these devices do not require special configurations and therefore access to the web interface of the client ONT device is not required, although it is possible to update the software. To configure the switching of the required VLANs, the Ethernet port profiles of the client ONT are created at the OLT. Most user-side configurations must be made in the devices connected to the SFU.\n\nFor OMCI data flow, there is a mutually unambiguous mapping between the GEM port on the OLT side with the UNI Ethernet port on the terminal side of the ONT. All data packets can pass through without learning or forwarding the MAC address. SFU ONTs support multiple VLANs through bridge mode.\n\n```mermaid\nflowchart LR\n    subgraph BRIDGE\n        VLAN0[VLAN untagged] --> eth0\n        VLAN1[VLAN 1] --> eth0\n        VLANn[VLAN n] --> eth0\n        eth0 --> WAN\n    end\n    subgraph OMCI\n        WAN --> PPTP[\"PPTP Ethernet UNI\"]\n        PPTP --> bridge((MAC BRIDGE))\n        subgraph M0[\" \"]\n            direction LR\n            VlanFIT0[VlanFIT] -.- Port0[Port] --> 80210[802.1p Mapping]\n            80210 <--> GEMIWTP0[GEM Interworking TP]\n            80210 <--> GEMIWTP02[GEM Interworking TP]\n            \n        end\n        bridge --> M0\n        subgraph M1[\" \"]\n            direction LR\n            VlanFIT1[VlanFIT] -.- Port1[Port]\n            Port1 --> 80211[802.1p Mapping]\n            80211 <--> GEMIWTP1[GEM Interworking TP]\n            80211 <--> GEMIWTP12[GEM Interworking TP]\n        end\n        bridge --> M1\n        subgraph M2[\" \"]\n            direction LR\n            VlanFIT2[VlanFIT] -.- Port2[Port]\n            Port2 --> 80212[802.1p Mapping]\n            80212 <--> GEMIWTP2[GEM Interworking TP]\n        end\n        bridge --> M2\n        M0 --> GEM((GEM Port Network CTP))\n        M1 --> GEM\n        M2 --> GEM\n    end\nExtVlan --> PPTP\n```\nSource [^cablefax_future], [^G_988]\n\n# Virtual Ethernet Interface Point (VEIP - MIB 329)\n\nVEIP is a service profile designed to terminate the connection directly on the CPE, providing various services (voice, data, video) each with its own characteristics. It allows multiple Ethernet services to be carried over a single PON link. VEIP virtualises all interfaces of the ONU.\n\nSimilarly, all UNI-side modules within a VEIP are invisible to and cannot be managed by OMCI or the user. They are only visible and manageable to a management domain other than OMCI. In addition, each ONT must have only one VEIP.\n\nIn some countries, it is also used to allow quick switches between ISPs: ISP A is assigned to Ethernet port 1 of the HGU, ISP B is assigned to Ethernet port 2 of the HGU, and so on[^nanomad_fc],[^anime_rtl960x],[^huawei_veip].\n\n\n```mermaid\nflowchart LR\n    subgraph RG\n        eth0 --> br0 --> WAN0[WAN0 VID100]\n        eth1 --> br1 --> WAN1[WAN1 untagged]\n        eth2 --> br1\n        br2 --> WAN2[WAN1 VID300/P2]\n        eht3 --> br3 --> WAN2\n    end\n    subgraph OMCI\n        WAN1 --> VEIP\n        WAN2 --> VEIP\n        WAN0 --> VEIP\n        VEIP --> bridge((BRIDGE))\n        subgraph M0[\" \"]\n            direction LR\n            VlanFIT0[VlanFIT] -.- Port0[Port] --> 80210[802.1p Mapping]\n            80210 <--> GEMIWTP0[GEM Interworking TP]\n            80210 <--> GEMIWTP02[GEM Interworking TP]\n            \n        end\n        bridge --> M0\n        subgraph M1[\" \"]\n            direction LR\n            VlanFIT1[VlanFIT] -.- Port1[Port]\n            Port1 --> 80211[802.1p Mapping]\n            80211 <--> GEMIWTP1[GEM Interworking TP]\n            80211 <--> GEMIWTP12[GEM Interworking TP]\n        end\n        bridge --> M1\n        subgraph M2[\" \"]\n            direction LR\n            VlanFIT2[VlanFIT] -.- Port2[Port]\n            Port2 --> 80212[802.1p Mapping]\n            80212 <--> GEMIWTP2[GEM Interworking TP]\n        end\n        bridge --> M2\n        M0 --> GEM((GEM Port Network CTP))\n        M1 --> GEM\n        M2 --> GEM\n    end\nExtVlan --> VEIP\n```\nSource [^hsgp_hg_sfu]\n\n---\n\n[^G_988]: *G.988: ONU management and control interface (OMCI) specification* https://www.itu.int/rec/T-REC-G.988\n[^G_984_4]: *G.984.4: Gigabit-capable Passive Optical Networks (G-PON): ONT management and control interface specification* https://www.itu.int/rec/T-REC-G.988\n[^hsgp_hg_sfu]: *Differences between HGU ONU and SFU ONU*  https://hsgq.com/optical-module/296.html\n[^anime_rtl960x]: *Hacking RTL960x*  https://github.com/Anime4000/RTL960x\n[^nanomad_fc]: *XGS-PON - ONT SFP+ su router proprietario*  https://forum.fibra.click/d/39131-xgs-pon-ont-sfp-su-router-proprietario/12\n[^huawei_veip]: *VEIP knowledge*  https://forum.huawei.com/enterprise/en/veip-knowledge/thread/771975-100181\n[^cablefax_future]: *PONs: Why Testing For Conformance And Interoperability Are Key To Their Future*  https://www.cablefax.com/archives/pons-why-testing-for-conformance-and-interoperability-are-key-to-their-future"
  },
  {
    "path": "_gpon/vendor.md",
    "content": "---\ntitle: ONU Vendor ID\nhas_children: false\nnav_order: 4\nlayout: default\n---\n\n> 4 ASCII characters\n\nNeeds to be set for the OLT to authenticate your ONT; please read your original ONT's Serial Number, it can be either in HEX or ASCII: if it's codified in HEX, you need to convert the first eight HEX digits to ASCII, for example `48575443` = `HWTC`.\n\nHere is a list of the most popular Vendor IDs:\n\n\n| ID     | HEX ID     | Vendor Name          |\n| ------ | ---------- | -------------------- |\n| `ADTN` | `4144544e` | Adtran |\n| `ALCL` | `414c434c` | Nokia/Alcatel-Lucent |\n| `ALLG` | `414c4c47` | ALLNET               |\n| `AVMG` | `41564d47` | AVM (FRITZ!Box)      |\n| `ASKY` | `41534b59` | Askey                |\n| `CDKT` | `43444B54` | KingType             |\n| `CIGG` | `43494747` | Cig                  |\n| `CXNK` | `43584e4b` | Calix                |\n| `DDKT` | `44444b54` | DKT                  |\n| `DLNK` | `444c4e4b` | Dlink                |\n| `DSNW` | `44534e57` | DASAN                |\n| `ELTX` | `454c5458` | Eltex                |\n| `FHTT` | `46485454` | FiberHome            |\n| `GMTK` | `474d544b` | GemTek               |\n| `GNXS` | `474e5853` | Genexis              |\n| `GPNC` | `47504E43` | NuCom                |\n| `GPON` | `47504f4e` | Generic vendor name  |\n| `GTHG` | `47544847` | Alcatel-Lucent (ODM) |\n| `HALN` | `48414c4e` | HALNy                |\n| `HBMT` | `48424d54` | HiSense              |\n| `HUMA` | `48554d41` | Humax                |\n| `HWTC` | `48575443` | Huawei               |\n| `ICTR` | `49435452` | Icotera              |\n| `ISKT` | `49534b54` | Iskratel             |\n| `KAON` | `4b414f4e` | KAONMEDIA            |\n| `LEOX` | `4c454f58` | LEOX                 |\n| `LQDE` | `4c514445` | Lantiq               |\n| `NOKG` | `4e4f4b47` | Nokia (GemTek ODM)   |\n| `NOKW` | `4e4f4b57` | Nokia (GemTek ODM)   |\n| `MSTC` | `4d535443` | Mitrastar            |\n| `PTIN` | `5054494e` | Altice/PT Inovação   |\n| `RTKG` | `52544b47` | Realtek              |\n| `SCOM` | `53434f4d` | Sercomm              |\n| `SKYW` | `534b5957` | Skyworth             |\n| `SMBS` | `534d4253` | Sagemcom             | \n| `SPGA` | `53504741` | SourcePhotonics      |\n| `TMBB` | `544d4242` | Technicolor          |\n| `TPLG` | `54504c47` | TP-Link              |\n| `UBNT` | `55424e54` | Ubiquiti             |\n| `UGRD` | `55475244` | UGrid                |\n| `YOTC` | `594f5443` | YOTC                 |\n| `YHTC` | `59485443` | Youhua               |\n| `ZNTS` | `5a4e5453` | DZS                  |\n| `ZRMT` | `5a524d54` | Zaram                |\n| `ZTEG` | `5a544547` | ZTE                  |\n| `ZYWN` | `5a59574e` | Zyxel                |\n| `ZYXE` | `5a595845` | Zyxel                |\n\n{% include alert.html content=\"You can also help us with adding content to this site, you can find a button to edit on GitHub on each page.\" alert=\"Tip\"  icon=\"svg-info\" color=\"green\" %}\n"
  },
  {
    "path": "_includes/cig_password.html",
    "content": "<div>\n    <form id=\"cig-password\" novalidate>\n        <div class=\"form-floating mb-3\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Serial Number\" name=\"serial\" id=\"serial\" required pattern=\"[0-9A-Za-z]{4}[0-9A-Fa-f]{8}\">\n            <label for=\"serial\" class=\"form-label\">GPON S/N in format GPONabc12345</label>\n            <div class=\"invalid-feedback\">\n                Please provide a valid GPON S/N.\n            </div>\n        </div>\n        <div class=\"mb-3\">\n            <input type=\"submit\" class=\"btn btn-primary\" value=\"Generate!\" id=\"submit\">\n            <label for=\"submit\" class=\"form-label\">Warning: this script is hosted on a third-party server.</label>\n        </div>\n        <div class=\"form-floating mb-3\">\n            <input readonly type=\"text\" class=\"form-control\" placeholder=\"Serial Number\" name=\"username\" id=\"username\" value=\"{{include.username}}\">\n            <label for=\"username\" class=\"form-label\">Username</label>\n        </div>\n        <div class=\"form-floating mb-3\">\n            <input readonly class=\"form-control\" type=\"text\" id=\"result\" placeholder=\"Result\">\n            <label for=\"result\" class=\"form-label\">Password</label>\n        </div>\n    </form>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js\"></script>\n    <script type=\"text/javascript\" src=\"/assets/js/cigpassword.js\"></script>\n    <script>\n        var cigPassword = document.getElementById('cig-password');\n        cigPassword.addEventListener('submit', (event) => {\n            event.preventDefault();\n            if (!cigPassword.checkValidity()) {\n                event.preventDefault();\n            } else {\n                const data = new FormData(cigPassword);\n                document.getElementById('result').value = cigpassword_gpon(data.get(\"serial\"), data.get(\"username\"));\n            }\n            [...cigPassword.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        });\n    </script>\n</div>\n"
  },
  {
    "path": "_includes/cig_password_xgspon.html",
    "content": "<div>\n    <form id=\"cig-password\" novalidate>\n        <div class=\"form-floating mb-3\">\n            <input type=\"text\" class=\"form-control\" placeholder=\"Serial Number\" name=\"serial\" id=\"serial\" required pattern=\"[0-9A-Za-z]{4}[0-9A-Fa-f]{8}\">\n            <label for=\"serial\" class=\"form-label\">GPON S/N in format GPONabc12345</label>\n            <div class=\"invalid-feedback\">\n                Please provide a valid GPON S/N.\n            </div>\n        </div>\n        {% if include.password_len_modify == true %}\n        <div class=\"form-floating mb-3\">\n            <input readonly type=\"text\" class=\"form-control\" placeholder=\"Password length\" name=\"password_len\" id=\"password_len\" value=\"{{include.password_len}}\">\n            <label for=\"password_len\" class=\"form-label\">Password length</label>\n        </div>\n        {% else %}\n        <input readonly type=\"hidden\" name=\"password_len\" id=\"password_len\" value=\"{{include.password_len}}\">\n        {% endif %}\n        <div class=\"mb-3\">\n            <input type=\"submit\" class=\"btn btn-primary\" value=\"Generate!\" id=\"submit\">\n            <label for=\"submit\" class=\"form-label\">Warning: this script is hosted on a third-party server.</label>\n        </div>\n        <div class=\"form-floating mb-3\">\n            <input readonly type=\"text\" class=\"form-control\" placeholder=\"Serial Number\" name=\"username\" id=\"username\">\n            <label for=\"username\" class=\"form-label\">Username</label>\n        </div>\n        <div class=\"form-floating mb-3\">\n            <input readonly class=\"form-control\" type=\"text\" id=\"result\" placeholder=\"Result\">\n            <label for=\"result\" class=\"form-label\">Password</label>\n        </div>\n    </form>\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js\"></script>\n    <script type=\"text/javascript\" src=\"/assets/js/cigpassword.js\"></script>\n    <script>\n        var cigPassword = document.getElementById('cig-password');\n        cigPassword.addEventListener('submit', (event) => {\n            event.preventDefault();\n            if (!cigPassword.checkValidity()) {\n                event.preventDefault();\n            } else {\n                const data = new URLSearchParams(new FormData(cigPassword));\n                document.getElementById('result').value = cigpassword_gpon(data.get(\"serial\"), null, data.get(\"password_len\"), true);\n                document.getElementById('username').value = data.get(\"serial\");\n            }\n            [...cigPassword.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        });\n    </script>\n</div>\n"
  },
  {
    "path": "_includes/head_custom.html",
    "content": "<link rel=\"apple-touch-icon\" sizes=\"180x180\" href=\"/apple-touch-icon.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/favicon-32x32.png\">\n<link rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/favicon-16x16.png\">\n<link rel=\"manifest\" href=\"/site.webmanifest\">\n<link rel=\"mask-icon\" href=\"/safari-pinned-tab.svg\" color=\"#27262b\">\n<meta name=\"msapplication-TileColor\" content=\"#27262b\">\n<meta name=\"theme-color\" content=\"#27262b\">"
  },
  {
    "path": "_includes/icons/custom.html",
    "content": "<symbol id=\"svg-telegram\" viewBox=\"0 0 16 16\">\n    <title>Telegram</title>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\"  viewBox=\"0 0 16 16\" role=\"img\" aria-label=\"Telegram\">\n        <path d=\"M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM8.287 5.906c-.778.324-2.334.994-4.666 2.01-.378.15-.577.298-.595.442-.03.243.275.339.69.47l.175.055c.408.133.958.288 1.243.294.26.006.549-.1.868-.32 2.179-1.471 3.304-2.214 3.374-2.23.05-.012.12-.026.166.016.047.041.042.12.037.141-.03.129-1.227 1.241-1.846 1.817-.193.18-.33.307-.358.336a8.154 8.154 0 0 1-.188.186c-.38.366-.664.64.015 1.088.327.216.589.393.85.571.284.194.568.387.936.629.093.06.183.125.27.187.331.236.63.448.997.414.214-.02.435-.22.547-.82.265-1.417.786-4.486.906-5.751a1.426 1.426 0 0 0-.013-.315.337.337 0 0 0-.114-.217.526.526 0 0 0-.31-.093c-.3.005-.763.166-2.984 1.09z\"/>\n    </svg>\n</symbol> \n<symbol id=\"svg-github\" viewBox=\"0 0 16 16\">\n    <title>GitHub</title>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\"  viewBox=\"0 0 16 16\" role=\"img\" aria-label=\"GitHub\">\n        <path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z\"/>\n    </svg>\n</symbol>\n<symbol id=\"svg-edit\" viewBox=\"0 0 24 24\">\n    <title>Edit</title>\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n        <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\">\n        </path>\n    </svg>\n</symbol>"
  },
  {
    "path": "_includes/image.html",
    "content": "<figure>\n    {% if {{include.url}} %}\n        <a class=\"no_icon\" target=\"_blank\" rel=\"noopener\" href=\"{{include.url}}\">\n    {% endif %}\n    <img class=\"docimage\" src=\"{{include.file | replace: \"\\\", \"/\" | prepend: '/assets/img/' | relative_url }}\" alt=\"{{include.alt}}\" {% if {{include.max-width}} %}style=\"max-width: {{include.max-width}}px\"{% endif %} />\n    {% if {{include.url}} %}</a>{% endif %}{% if {{include.caption}} %}\n    <figcaption>\n        {{include.caption}}\n    </figcaption>\n    {% endif %}\n</figure>\n"
  },
  {
    "path": "_includes/root_lantiq.html",
    "content": "<div class=\"modal\" data-jtd-modal=\"root-modal\" data-jtd-modal-backdrop=\"static\" id=\"root-modal\">\n    <div class=\"modal-content\">\n        <div class=\"modal-header\">\n        <span class=\"close\">&times;</span>\n        <h2>Root status</h2>\n        </div>\n        <div class=\"modal-body\" style=\"display:flex\">\n{% if include.unlockHuaweiShell %}\n            <div class=\"animated\" id=\"root-step-1\"  style=\"width:50%\">\n{% else %}\n            <div class=\"animated\" id=\"root-step-1\"  style=\"width:100%\">\n{% endif %}\n                <p>Step 1</p>\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 130.2 130.2\">\n                    <circle class=\"path circle\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-miterlimit=\"10\" cx=\"65.1\" cy=\"65.1\" r=\"62.1\"/>\n                    <polyline class=\"path check success\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" points=\"100.2,40.2 51.5,88.8 29.8,67.5 \"/>\n                    <line class=\"path line error\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"34.4\" y1=\"37.9\" x2=\"95.8\" y2=\"92.3\"/>\n                    <line class=\"path line error\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"95.8\" y1=\"38\" x2=\"34.4\" y2=\"92.2\"/>\n                    <line class=\"path line pause\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"34.4\" y1=\"37.9\" x2=\"95.8\" y2=\"92.3\"/>\n                    <line class=\"path line pause\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"95.8\" y1=\"38\" x2=\"34.4\" y2=\"92.2\"/>\n                </svg>\n                <p id=\"root-text-step-1\"></p>\n            </div>\n\n{% if include.unlockHuaweiShell %}\n            <div class=\"animated\" id=\"root-step-2\" style=\"width:50%\"  >\n                <p>Step 2</p>\n                <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 130.2 130.2\">\n                    <circle class=\"path circle\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-miterlimit=\"10\" cx=\"65.1\" cy=\"65.1\" r=\"62.1\"/>\n                    <polyline class=\"path check success\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" points=\"100.2,40.2 51.5,88.8 29.8,67.5 \"/>\n                    <line class=\"path line error\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"34.4\" y1=\"37.9\" x2=\"95.8\" y2=\"92.3\"/>\n                    <line class=\"path line error\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"95.8\" y1=\"38\" x2=\"34.4\" y2=\"92.2\"/>\n                    <line class=\"path line pause\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"49.4\" y1=\"37.9\" x2=\"49.4\" y2=\"92.3\"/>\n                    <line class=\"path line pause\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-miterlimit=\"10\" x1=\"80.8\" y1=\"38\" x2=\"80.8\" y2=\"92.2\"/>\n                </svg>\n                <p id=\"root-text-step-2\"></p>\n            </div>\n{% endif %}\n        </div>\n    </div>\n</div>\n<script type=\"text/javascript\" src=\"/assets/js/serialUtil.js\"></script>\n<script type=\"text/javascript\" src=\"/assets/js/rootLantiq.js\"></script>\n<script>\n    if ('serial' in navigator) {\n        document.getElementById('start-button').disabled = false;\n    } else {\n        document.getElementById('browser-error').style.display = 'block';\n        document.getElementById('start-button').disabled = true;\n        document.getElementById('start-button').innerHTML=document.getElementById('start-button').innerText.strike();\n    }\n    const acontroller = new AbortController();\n    const cs = acontroller.signal;\n\n    let rootModal = document.getElementById(\"root-modal\");\n\n    let rootStep = [document.getElementById('root-step-1')];\n\n{% if include.unlockHuaweiShell %}\n    rootStep.push(document.getElementById('root-step-2'));\n{% endif %}\n\n    let rootStepText = [document.getElementById('root-text-step-1')];\n\n{% if include.unlockHuaweiShell %}\n    rootStepText.push(document.getElementById('root-text-step-2'));\n{% endif %}\n\n    rootModal.addEventListener('modal-jtd-close', async function(event) {\n        acontroller.abort();\n    });\n    rootModal.addEventListener('modal-jtd-open', async function(event) {\n        root({signal: cs});\n    });\n    function pause(message, i) {\n        rootStep[i].classList.add('pause');\n        rootStep[i].classList.remove('complete');\n        rootStep[i].classList.remove('loading');\n        rootStep[i].classList.remove('error');\n        rootStep[i].classList.remove('success');\n        rootStepText[i].textContent = message;\n    }\n    function loading(message, i) {\n        rootStep[i].classList.remove('pause');\n        rootStep[i].classList.remove('complete');\n        rootStep[i].classList.add('loading');\n        rootStep[i].classList.remove('error');\n        rootStep[i].classList.remove('success');\n        rootStepText[i].textContent = message;\n    }\n    function showError(message, i) {\n        rootStep[i].classList.remove('pause');\n        rootStep[i].classList.remove('complete');\n        rootStep[i].classList.remove('success');\n        rootStep[i].classList.remove('loading');\n        rootStep[i].classList.add('error');\n        rootStepText[i].textContent = message;\n    }\n    function showSuccess(message, i) {\n        rootStep[i].classList.remove('pause');\n        rootStep[i].classList.remove('error');\n        rootStep[i].classList.remove('loading');\n        rootStep[i].classList.remove('complete');\n        rootStep[i].classList.add('success');\n        rootStepText[i].textContent = message;\n    }\n    async function root({ signal } = {}) {\n        loading(\"Waiting for the user to choose the port\",0);\n\n{% if include.unlockHuaweiShell %}\n        pause(\"\",1);\n{% endif %}\n\n        let port;\n        try {\n            port = await navigator.serial.requestPort();\n        } catch (err) {\n            showError(`Error: ${err.message}`,0);\n            console.log(`Error: ${err.message}\\n`);\n            return;\n        }\n        if (!port) {\n            showError('Error: port not open',0);\n            console.log('Error: port not open\\n');\n            return;\n        }\n\n        let result = await lantiqRootUboot(port, \"{{include.modelName}}\",\n            (msg) => {\n                loading(msg, 0);\n            },\n            (err) => {\n                showError(err, 0);\n                console.log(err);\n            }\n        );\n\n        if (result) {\n            showSuccess(\"Congratulations! Step completed.\", 0);\n        } else {\n            return;\n        }\n\n{% if include.unlockHuaweiShell %}\n        result = await unlockHuaweiShell(port,\n            (msg) => {\n                loading(msg, 1);\n            },\n            (err) => {\n                showError(err, 1);\n                console.log(err);\n            }\n        );\n\n        if (result) {\n            showSuccess(\"Congratulations! Step completed.\", 1);\n        }\n{% endif %}\n    }\n</script>\n"
  },
  {
    "path": "_includes/serial_dump.html",
    "content": "\n<details>\n    <summary>{{include.title}}</summary>\n    <div class=\"language-plaintext highlighter-rouge\">\n        <div class=\"highlight\">\n            <pre class=\"highlight\">\n                <code>\n{% include_relative {{include.file | replace: \"\\\", \"/\" | prepend: 'serial_dump/' | relative_url}} %}\n                </code>\n            </pre>\n        </div>\n    </div>\n</details>\n"
  },
  {
    "path": "_includes/ymodem_lantiq.html",
    "content": "<div class=\"modal\" data-jtd-modal=\"flash-modal\" data-jtd-modal-backdrop=\"static\" id=\"flash-modal\">\n    <div class=\"modal-content\">\n        <div class=\"modal-header\">\n        <span class=\"close\">&times;</span>\n        <h2>Flash firmware</h2>\n        </div>\n        <form id=\"flash-form\" class=\"p-4\" novalidate>\n            <div class=\"form-floating mb-3\">\n                <input type=\"file\" class=\"form-control\" placeholder=\"Flash MTD\" name=\"flash-mtd\" id=\"flash-mtd\" required>\n                <label for=\"flash-mtd\">Flash MTD</label>\n            </div>\n            <div class=\"mb-3 form-check\">\n                <input type=\"checkbox\" class=\"form-check-input\" id=\"baud-rate-oc\" name=\"baud-rate-oc\">\n                <label class=\"form-check-label\" for=\"baud-rate-oc\">230400 baud rate, do not enable unless told to do so</label>\n            </div>\n            <div class=\"form-check\">\n                <input class=\"form-check-input\" type=\"radio\" name=\"image\" id=\"image0\" value=\"image0\">\n                <label class=\"form-check-label\" for=\"image0\">\n                    Image 0\n                </label>\n            </div>\n            <div class=\"form-check\">\n                <input class=\"form-check-input\" type=\"radio\" name=\"image\" id=\"image1\" value=\"image1\">\n                <label class=\"form-check-label\" for=\"image1\">\n                    Image 1\n                </label>\n            </div>\n            <div class=\"mb-3\">\n                <input type=\"submit\" class=\"btn btn-primary\" value=\"Flash!\">\n            </div>\n            <progress id=\"flash-progress\" value=\"0\" max=\"100\"></progress>\n            <p id=\"flash-text-step\"></p>\n        </form>\n    </div>\n</div>\n\n<script type=\"text/javascript\" src=\"/assets/js/xymini.js\"></script>\n{% if include.dontLoadRootScript != true %}\n<script type=\"text/javascript\" src=\"/assets/js/rootLantiq.js\"></script>\n<script type=\"text/javascript\" src=\"/assets/js/serialUtil.js\"></script>\n{% endif %}\n<script>\n    if ('serial' in navigator) {\n        document.getElementById('flash-start-button').disabled = false;\n    } else {\n        document.getElementById('flash-browser-error').style.display = 'block';\n        document.getElementById('flash-start-button').disabled = true;\n        document.getElementById('flash-start-button').innerHTML=document.getElementById('flash-start-button').innerText.strike()\n    }\n    const acontroller = new AbortController();\n    const cs = acontroller.signal;\n    let flashModal = document.getElementById(\"flash-modal\");\n    let flashForm = document.getElementById(\"flash-form\");\n    let flashProgress = document.getElementById(\"flash-progress\");\n    let flashTextStep = document.getElementById(\"flash-text-step\");\n    flashModal.addEventListener('modal-jtd-close', async function(event) {\n        acontroller.abort();\n    });\n    flashModal.addEventListener('modal-jtd-open', async function(event) {\n        flash({signal: cs});\n    });\n    function initTextStep() {\n        flashTextStep.textContent = \"\";\n        flashTextStep.classList.remove('text-success-400');\n        flashTextStep.classList.remove('text-error-400');\n    }\n    function pause(message) {\n        flashTextStep.textContent = message;\n    }\n    function loading(message) {\n        flashTextStep.textContent = message;\n    }\n    function showError(message) {\n        flashTextStep.textContent = message;\n        flashTextStep.classList.add('text-error-400');\n        flashTextStep.classList.remove('text-success-400');\n    }\n    function showSuccess(message) {\n        flashTextStep.textContent = message;\n        flashTextStep.classList.add('text-success-400');\n        flashTextStep.classList.remove('text-error-400');\n    }\n    async function flash({ signal } = {}) {\n        initTextStep();\n        let port;\n        try {\n            port = await navigator.serial.requestPort();\n        } catch (err) {\n            showError(`Error: ${err.message}`);\n            console.log(`Error: ${err.message}\\n`);\n            return;\n        }\n        if (!port) {\n            showError('Error: port not open');\n            console.log('Error: port not open\\n');\n            return;\n        }\n        flashForm.addEventListener('submit', async function(event) {\n            if (!flashForm.checkValidity()) {\n                event.preventDefault();\n                [...flashForm.elements].map(function(e){return e.parentNode}).forEach(function(e){e.classList.toggle('was-validated', true)});\n            } else {\n                event.preventDefault();\n                [...flashForm.elements].map(function(e){return e.parentNode}).forEach(function(e){e.classList.toggle('was-validated', false)});\n                var fomrdata = new FormData(flashForm);\n                var file = fomrdata.get('flash-mtd');\n                var image = fomrdata.get('image');\n                var data = new Uint8Array(await file.arrayBuffer());\n                console.log(data);\n\n                /* Unlock U-Boot if needed and stop booting */\n                let result = await lantiqRootUboot(port, \"{{include.modelName}}\",\n                    (msg) => {\n                        loading(msg);\n                        console.log(msg);\n                    },\n                    (err) => {\n                        showError(err);\n                        console.log(err);\n                    }\n                );\n\n                if (!result) {\n                    return;\n                }\n\n                let baudrate = 115200;\n                if(fomrdata.has('baud-rate-oc')) {\n                    let newBaudrate = 230400;\n                    loading(`Changing baudrate to: ${newBaudrate}`);\n\n                    result = await changeBaudrate(port, newBaudrate, baudrate,\n                        (err) => {\n                            showError(err);\n                            console.log(err);\n                        }\n                    );\n\n                    if (result) {\n                        baudrate = newBaudrate;\n                    } else {\n                        return;\n                    }\n                }\n\n                loading(\"Start sending image to the SFP...\");\n                result = await sendImageMtd(port, data, baudrate,\n                    (err) => {\n                        showError(err);\n                        console.log(err);\n                    },\n                    (byteTransfered) => {\n                        const perc = (byteTransfered/data.length) * 100;\n                        const percTrunc = Math.trunc(perc*100)/100;  /* Two decimal trunc */\n                        flashProgress.value = perc;\n                        loading(`Image transfer: ${percTrunc}% complete`)\n                    }\n                );\n\n                if (!result) {\n                    return;\n                }\n\n                result = await waitEndImageLoad(port, baudrate,\n                    (err) => {\n                        showError(err);\n                        console.log(err);\n                    }\n                );\n\n                if (!result) {\n                    return;\n                }\n\n                if(fomrdata.has('baud-rate-oc')) {\n                    let newBaudrate = 115200;\n                    loading(`Restore baudrate to: ${newBaudrate}`);\n\n                    result = await changeBaudrate(port, newBaudrate, baudrate,\n                        (err) => {\n                            showError(err);\n                            console.log(err);\n                        }\n                    );\n\n                    if (result) {\n                        baudrate = newBaudrate;\n                    } else {\n                        return;\n                    }\n                }\n\n                loading(\"Transfer complete, image flash in progress. DO NOT REMOVE the SFP!\");\n                result = await flashImageMtd(port, image, baudrate,\n                    (err) => {\n                        showError(err);\n                        console.log(err);\n                    }\n                );\n\n                if (result) {\n                    showSuccess(\"Flash completed, now you can remove the SFP\");\n                }\n            }\n        });\n    };\n</script>\n"
  },
  {
    "path": "_layouts/default.html",
    "content": "---\nlayout: table_wrappers\n---\n\n<!DOCTYPE html>\n\n<html lang=\"{{ site.lang | default: 'en-US' }}\">\n{% include head.html %}\n<body>\n  {% if site.enable_rainbow == true %}\n  <style>\n    .rainbow-button {\n      font-size: 150%;\n    }\n    .rainbow-button:hover {\n      background-image: none;\n    }\n  </style>\n  {% endif %}\n  <a class=\"skip-to-main\" href=\"#main-content\">Skip to main content</a>\n  <svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none;\">\n    <symbol id=\"svg-link\" viewBox=\"0 0 24 24\">\n      <title>Link</title>\n      <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\">\n        <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>\n      </svg>\n    </symbol>\n    <symbol id=\"svg-search\" viewBox=\"0 0 24 24\">\n      <title>Search</title>\n      <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\">\n        <circle cx=\"11\" cy=\"11\" r=\"8\"></circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n      </svg>\n    </symbol>\n    <symbol id=\"svg-menu\" viewBox=\"0 0 24 24\">\n      <title>Menu</title>\n      <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\">\n        <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>\n      </svg>\n    </symbol>\n    <symbol id=\"svg-arrow-right\" viewBox=\"0 0 24 24\">\n      <title>Expand</title>\n      <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\">\n        <polyline points=\"9 18 15 12 9 6\"></polyline>\n      </svg>\n    </symbol>\n    <symbol id=\"svg-doc\" viewBox=\"0 0 24 24\">\n      <title>Document</title>\n      <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\">\n        <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>\n      </svg>\n    </symbol>\n    {% include icons/alert.html %}\n    {% include icons/external_link.html %}\n    {% include icons/code_copy.html %}\n    {% if site.enable_switch_color_scheme != false %}\n      {% include icons/switch_color_scheme.html %}\n    {% endif %}\n    {% include icons/custom.html %}\n  </svg>\n\n  <div class=\"side-bar\">\n    <div class=\"site-header\">\n      <a href=\"{{ '/' | relative_url }}\" class=\"site-title lh-tight\">{% include title.html %}</a>\n      {% if site.enable_rainbow == true %}\n      <a class=\"site-button rainbow-button\" href=\"#\">\n        🏳️‍🌈\n      </a>\n      {% endif %}\n      <a href=\"#\" id=\"menu-button\" class=\"site-button\">\n        <svg viewBox=\"0 0 24 24\" class=\"icon\"><use xlink:href=\"#svg-menu\"></use></svg>\n      </a>\n    </div>\n    <nav role=\"navigation\" aria-label=\"Main\" id=\"site-nav\" class=\"site-nav\">\n      {% include nav/main.html %}\n    </nav>\n    \n    {% capture nav_footer_custom %}\n      {%- include nav_footer_custom.html -%}\n    {% endcapture %}\n    {% if nav_footer_custom != \"\" %}\n      {{ nav_footer_custom }}\n    {% else %}\n      <footer class=\"site-footer\">\n        This site uses <a href=\"https://github.com/just-the-docs/just-the-docs\">Just the Docs</a>, a documentation theme for Jekyll.\n      </footer>\n    {% endif %}\n  </div>\n  <div class=\"main\" id=\"top\">\n    <div id=\"main-header\" class=\"main-header\">\n      {% if site.search_enabled != false %}\n\n        {% capture search_placeholder %}{% include search_placeholder_custom.html %}{% endcapture %}\n\n        <div class=\"search\">\n          <div class=\"search-input-wrap\">\n            <input type=\"text\" id=\"search-input\" class=\"search-input\" tabindex=\"0\" placeholder=\"{{ search_placeholder | strip_html | strip }}\" aria-label=\"{{ search_placeholder | strip_html| strip }}\" autocomplete=\"off\">\n            <label for=\"search-input\" class=\"search-label\"><svg viewBox=\"0 0 24 24\" class=\"search-icon\"><use xlink:href=\"#svg-search\"></use></svg></label>\n          </div>\n          <div id=\"search-results\" class=\"search-results\"></div>\n        </div>\n      {% else %}\n        <div></div>\n      {% endif %}\n      {% include header_custom.html %}\n      {% if site.aux_links or site.aux_buttons or site.enable_switch_color_scheme == true %}\n        <nav aria-label=\"Auxiliary\" class=\"aux-nav\">\n          <ul class=\"aux-nav-list\">\n            {% for link in site.aux_buttons %}\n              <span class=\"site-button\">\n                <a href=\"{{ link.link }}\" class=\"btn btn-{{ link.color }}\">{{ link.title }}\n                  {% if link.logo %}\n                    <img src=\"{{ link.logo }}\" class=\"site-button-icon\"></img>\n                  {% endif %}\n                  {% if link.icon %}\n                  <svg class=\"site-button-icon\">\n                    <use xlink:href=\"#svg-{{ link.icon }}\"></use>\n                  </svg>\n                  </svg>\n                  {% endif %}\n                </a>\n              </span>\n            {% endfor %}\n            {% for link in site.aux_links %}\n              <li class=\"aux-nav-list-item\">\n                <a href=\"{{ link.last }}\" class=\"site-button\"\n                  {% if site.aux_links_new_tab %}\n                  target=\"_blank\" rel=\"noopener noreferrer\"\n                  {% endif %}\n                >\n                  {{ link.first }}\n                </a>\n              </li>\n            {% endfor %}\n            {% if site.enable_rainbow == true %}\n            <li class=\"aux-nav-list-item\">\n              <a class=\"site-button rainbow-button\" href=\"#\">\n                🏳️‍🌈\n              </a>\n            </li>\n            {% endif %}\n            {% if site.enable_switch_color_scheme == true %}\n            <li class=\"aux-nav-list-item\">\n              <button class=\"site-button color-scheme-switch-theme-button\">\n                <svg aria-hidden=\"true\" class=\"site-button-icon\"><use href=\"#svg-{{ site.color_scheme | default: 'light' }}\"></use></svg>\n              </button>\n            </li>\n            {% endif %}\n          </ul>\n        </nav>\n      {% endif %}\n    </div>\n    <div id=\"main-content-wrap\" class=\"main-content-wrap\">\n      {% if page.parent and page.url != \"/\" %}\n        {% include nav/crumbs.html nodes=nav_page_ancestors %}\n      {% endif %}\n      <div id=\"main-content\" class=\"main-content\" role=\"main\">\n        <header class=\"page-header\" role=\"banner\">\n          {% if\n          site.gh_edit_link and\n          site.gh_edit_link_text and\n          site.gh_edit_repository and\n          site.gh_edit_branch and\n          site.gh_edit_view_mode\n          %}\n          <a class=\"site-button github-edit\"\n            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 }}\"\n            id=\"edit-this-page\" title=\"{{ site.gh_edit_link_text }}\"><svg xmlns=\"http://www.w3.org/2000/svg\"\n              viewBox=\"0 0 24 24\">\n              <use xlink:href=\"#svg-edit\">\n            </svg></a>\n          {% endif %}\n          <h1 class=\"fs-9\">{{ page.title | default: site.title | default: site.github.repository_name }}</h1>\n          {% if page.alias %}\n          <h2 class=\"fmt-0\"><span class=\"fw-300\">Also sold as: </span> {{ page.alias }}</h2>\n          {% endif %}\n          {% if site.last_edit_timestamp_script == true %}\n          <ul class=\"metadata text-small\">\n            <li id=\"last-modified\">Last Modified</li>\n            <li><a id=\"contributors\" data-jtd-toggle=\"modal\" data-jtd-target=\"#contributors-modal\">Contributor</a>\n            </li>\n          </ul>\n          <div class=\"modal\" data-jtd-modal=\"contributors-modal\" id=\"contributors-modal\">\n            <div class=\"modal-content\">\n              <div class=\"modal-header\">\n                <span class=\"close\">&times;</span>\n                <h2>Contributor to this article</h2>\n              </div>\n              <ul class=\"modal-body\" id=\"contributors-modal-list\">\n\n              </ul>\n            </div>\n          </div>\n          {% endif %}\n          {% if page.description %}\n          <h2 class=\"fs-6 fw-300\">{{ page.description }}</h2>\n          {% endif %}\n        </header>\n        <hr>\n        {% if site.heading_anchors != false %}\n          {% 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%\\\"\" %}\n        {% else %}\n          {{ content }}\n        {% endif %}\n\n        {% unless page.has_toc == false %}\n          {% include nav/toc.html nodes=nav_page_children %}\n        {% endunless %}\n\n        {% capture footer_custom %}\n          {%- include footer_custom.html -%}\n        {% endcapture %}\n        {% if footer_custom != \"\" or site.last_edit_timestamp or site.gh_edit_link %}\n          <hr>\n          <footer>\n            {% if site.back_to_top %}\n              <p><a href=\"#top\" id=\"back-to-top\">{{ site.back_to_top_text }}</a></p>\n            {% endif %}\n\n            {{ footer_custom }}\n\n            {% if site.last_edit_timestamp or site.gh_edit_link %}\n              <div class=\"d-flex mt-2\">\n                {% if site.last_edit_timestamp and site.last_edit_time_format and page.last_modified_date %}\n                  <p class=\"text-small text-grey-400 mb-0 mr-2\">\n                    Page last modified: <span class=\"d-inline-block\">{{ page.last_modified_date | date: site.last_edit_time_format }}</span>.\n                  </p>\n                {% endif %}\n                {% if\n                  site.gh_edit_link and\n                  site.gh_edit_link_text and\n                  site.gh_edit_repository and\n                  site.gh_edit_branch and\n                  site.gh_edit_view_mode\n                %}\n                  <p class=\"text-small text-grey-400 mb-0\">\n                    <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 %}{% if page.collection and site.collections_dir %}/{{ site.collections_dir }}{% endif %}/{{ page.path }}\" id=\"edit-this-page\">{{ site.gh_edit_link_text }}</a>\n                  </p>\n                {% endif %}\n              </div>\n            {% endif %}\n          </footer>\n        {% endif %}\n\n      </div>\n    </div>\n\n    {% if site.search_enabled != false %}\n      {% if site.search.button %}\n        <a href=\"#\" id=\"search-button\" class=\"search-button\">\n          <svg viewBox=\"0 0 24 24\" class=\"icon\"><use xlink:href=\"#svg-search\"></use></svg>\n        </a>\n      {% endif %}\n\n      <div class=\"search-overlay\"></div>\n    {% endif %}\n  </div>\n\n  {%if site.last_edit_timestamp_script and site.gh_owner_name and site.gh_repository_name and page.path %}\n  <script>\n    var listOfScannedFilename = [];\n\n    async function parseFirstCommit(commit, filename) {\n      return fetch(commit.url).then((response) => {\n        return response.json();\n      }).then(async function (commits) {\n        var old_filename = commits.files.filter(it => it.filename === filename && it.status === 'renamed').map(it => it.previous_filename);\n        if (old_filename[0] !== undefined && !listOfScannedFilename.includes(old_filename[0])) {\n          listOfScannedFilename.push(old_filename[0]);\n          return fetch(\"https://api.github.com/repos/{{ site.gh_owner_name }}/{{ site.gh_repository_name }}/commits?path=\" + old_filename[0])\n            .then((response) => {\n              return response.json();\n            }).then(async function (commits) {\n              return parseCommitsList(commits, old_filename);\n            });\n        }\n      });\n    }\n    async function parseCommitsList(commits, filename) {\n      var authors = commits.flatMap(x => [{ ...x.commit.author, ...x.author }, { ...x.commit.committer, ...x.committer }]).map(({ date, ...keepAttrs }) => keepAttrs).filter((value, index, self) =>\n        index === self.findIndex((t) => (\n          t.login === value.login\n        )) && value.login !== \"web-flow\"\n      );\n\n      var inner = await parseFirstCommit(commits[commits.length - 1], filename);\n\n\n      if (inner) {\n        inner = inner.filter(it => !authors.map(i => i.login).includes(it.login) && it.login !== \"web-flow\");\n        authors.push(...inner);\n\n      }\n\n\n      return authors;\n    }\n    async function setModifiedDate() {\n      if (document.getElementById('last-modified')) {\n        listOfScannedFilename.push(\"{{ page.path }}\");\n        fetch(\"https://api.github.com/repos/{{ site.gh_owner_name }}/{{ site.gh_repository_name }}/commits?path={{ page.path }}\")\n        .then((response) => {\n          return response.json();\n        })\n        .then(async function (commits) {\n          try{\n            var date = new Date(commits[0]['commit']['committer']['date']);\n            var modified = date.toLocaleDateString(undefined);\n\n            var authors = await parseCommitsList(commits, \"{{ page.path }}\");\n\n            document.getElementById('last-modified').textContent = \"Last Modified: \" + modified;\n            document.getElementById('contributors').textContent = authors.length + \" \" + (authors.length == 1 ? \"Contributor\" : \"Contributors\");\n\n            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('');\n          } catch (err) {\n            document.getElementById('last-modified').textContent = \"Sorry, last modified not currently available\";\n            document.getElementById('contributors').textContent = \"Contributors\";\n            document.getElementById('contributors-modal-list').innerHTML = \"<li>Sorry, list not currently available</li>\";\n          }\n        });\n      }\n    }\n\n    window.addEventListener('load', function () {\n      setModifiedDate()\n    });\n  </script>\n  {% endif %}\n  {% if site.mermaid %}\n  <script>\n    var config = {% include mermaid_config.js %};\n    mermaid.initialize(config);\n    window.mermaid.init(undefined, document.querySelectorAll('.language-mermaid'));\n  </script>\n  {% endif %}\n</body>\n</html>\n"
  },
  {
    "path": "_ont/ont-adtran-sdx-611.md",
    "content": "---\ntitle: Adtran SDX 611\nhas_children: false\nlayout: default\nparent: Adtran\n---\n\n# Hardware Specifications\n\n|                 |                                          |\n| --------------- | ---------------------------------------- |\n| Vendor/Brand    | Adtran                                   |\n| Model           | SDX 611 (Adtran-611-V2 REV1.0)           |\n| Chipset         | Realtek RTL9601D                         |\n| Flash           | 16 MB (Winbond W25Q128JVSQ)              |\n| RAM             |                                          |\n| System          |                                          |\n| Optics          | SC/APC (U&T UTG24P05)                    |\n| 2.5GbaseT       | No                                       |\n| IP address      |                                          |\n| Web Gui         |                                          |\n| SSH             |                                          |\n| Telnet          |                                          |\n| Serial          | ✅                                       |\n| Serial baud     | 115200                                   |\n| Serial encoding | 8-N-1                                    |\n| Form Factor     | ONT                                      |\n\n## Disassembly\n\n1. Remove the two screws hidden under the rubber feet on the back of the unit\n2. Use a plastic pry tool to separate the rear cover, as it is held in place by a snap fit\n\n{% include alert.html content=\"Be careful when prying the rear cover off, the snap fit clips can break easily.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include image.html file=\"sdx611-teardown-1.jpg\" alt=\"Adtran SDX 611 Teardown\" caption=\"Adtran SDX 611: Teardown\" %}\n{% include image.html file=\"sdx611-teardown-2.jpg\" alt=\"Adtran SDX 611 Board\" caption=\"Adtran SDX 611: Board\" %}\n{% include image.html file=\"sdx611-board-rev.jpg\" alt=\"Adtran SDX 611 Board Revision\" caption=\"Adtran SDX 611: Board revision (Adtran-611-V2 REV1.0)\" %}\n\n## Serial\n\nThe board has GND, TX and RX headers already soldered. A USB UART adapter such as a CH340G can be used to access the serial console.\n\n| USB TTL(UART) Adapter | Board header |\n| --------------------- | ------------ |\n| GND                   | GND          |\n| TX                    | RX           |\n| RX                    | TX           |\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n## Chip identification\n\n| Chip                   | Function           |\n| ---------------------- | ------------------ |\n| Realtek RTL9601D       | GPON SoC           |\n| U&T UTG24P05           | Optical transceiver (BOSA) |\n| Winbond W25Q128JVSQ    | 128Mbit (16MB) SPI NOR Flash |\n\n{% include image.html file=\"sdx611-rtl9601d.jpg\" alt=\"Realtek RTL9601D\" caption=\"Realtek RTL9601D GPON SoC\" %}\n{% include image.html file=\"sdx611-utg24p05.jpg\" alt=\"U&T UTG24P05\" caption=\"U&T UTG24P05 Optical Transceiver\" %}\n{% include image.html file=\"sdx611-w25q128jvsq.jpg\" alt=\"Winbond W25Q128JVSQ\" caption=\"Winbond W25Q128JVSQ 16MB SPI NOR Flash\" %}\n\n# Miscellaneous Links\n\n* [ispreview.co.uk](https://www.ispreview.co.uk/index.php/2022/09/pictured-openreachs-future-2-5gbps-ont-for-fttp-broadband.html)\n* [Adtran SDX 611](https://www.adtran.com/solutions/by-segment/products/by-category/fiber-access/optical-network-terminals-ont/611.html)\n\n\n"
  },
  {
    "path": "_ont/ont-adtran-sdx-611q.md",
    "content": "---\ntitle: Adtran SDX 611Q\nhas_children: false\nlayout: default\nparent: Adtran\n---\n\n# Hardware Specifications\n\n|              |          |\n| ------------ | -------- |\n| Vendor/Brand | Adtran   |\n| Model        | SDX 611Q |\n| Chipset      |          |\n| Flash        |          |\n| RAM          |          |\n| System       |          |\n| 2.5GbaseT    | Yes      |\n| Optics       |          |\n| IP address   |          |\n| Web Gui      |          |\n| SSH          |          |\n| Telnet       |          |\n| Serial       |          |\n| Form Factor  | ONT      |\n\n# Miscellaneous Links\n\n* [ispreview.co.uk](https://www.ispreview.co.uk/index.php/2022/09/pictured-openreachs-future-2-5gbps-ont-for-fttp-broadband.html)\n\n\n"
  },
  {
    "path": "_ont/ont-adtran-sdx-621i.md",
    "content": "---\ntitle: Adtran SDX 621i\nhas_children: false\nlayout: default\nparent: Adtran\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Adtran                           |\n| Model           | SDX 621i                         |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Adtran SDX series](https://www.adtran.com/solutions/by-segment/products/by-category/fiber-access/optical-network-terminals-ont)\n"
  },
  {
    "path": "_ont/ont-adtran.md",
    "content": "---\ntitle: Adtran\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-bt-pon-bt-g711ax.md",
    "content": "---\r\ntitle: BT-PON BT-G711AX\r\nhas_children: false\r\nlayout: default\r\nparent: BT-PON\r\n---\r\n\r\n# Hardware Specifications\r\n\r\n|                 |                                                                            |\r\n| --------------- | -------------------------------------------------------------------------- |\r\n| Vendor/Brand    | BT-PON                                                                     |\r\n| Model           | BT-G711AX                                                                  |\r\n| Chipset         | Realtek RTL9607Cv2 (Realtek RTL8198D is mentioned too in boot log???)      |\r\n| Flash           | SPI NAND 128MiB (Winbond W25N01GVZEIG)                                     |\r\n| RAM             | DDR3 256MiB                                                                |\r\n| CPU             | Formosa MIPS interAptiv (multi) V2.0                                       |\r\n| CPU Clock       | 1150MHz                                                                    |\r\n| Wireless        | RTL8192XBR 2x2 2.4Ghz (bgn+ax), RTL8832BR 2x2 5Ghz (an+ac+ax)              |\r\n| Bootloader      | U-Boot 2020.01                                                             |\r\n| System          | Linux 4.4.140 (Realtek MSDK-4.8.5p1 Build 3068)                            |\r\n| Load addr       | 80010000                                                                   |\r\n| Ethernet ports  | 4x1G                                                                       |\r\n| POTS ports      | 1xRJ11 (Si32192)                                                           |\r\n| Optics          | SC/UPC (SEMTECH GN25L95)                                                   |\r\n| IP address      | 192.168.1.1/24                                                             |\r\n| Web Gui         | ✅ user `admin`, password `YnQtcG9u` OR user `useradmin`, password `123456` |\r\n| SSH             | NO                                                                         |\r\n| Telnet          | ✅ user `supertelnet`, password `supertelnet`                               |\r\n| FTP             | ✅ port 21                                                                  |\r\n| Serial          | ✅                                                                          |\r\n| Serial baud     | 115200                                                                     |\r\n| Serial encoding | 8-N-1                                                                      | \r\n| Form Factor     | ONT                                                                        |\r\n\r\n## Serial\r\n{% include image.html file=\"bt-g711ax-serial.jpg\" alt=\"BT-G711AX\" caption=\"BT-G711AX: serial pinout\" %}\r\nYou can easily communicate with the ONT using a TTL converter (for example the CH341A programmer in TTL mode) by connecting the converters’ pins to the ONT following the pinout shown in the image above.\r\n\r\nOnce everything is ok, any TTY client, such as PuTTY, can be used to open the connection with its baud rate set to 115200. At this point, the ONT can be turned on.\r\n\r\nPress any key once you see `Hit any key to stop autoboot` (You only have 1 second to do this so be quick) after which you get access to bootloader console which looks like this:\r\n```sh\r\nPhoebus#\r\n```\r\n\r\n## List of partitions\r\n`cat /proc/mtd`\r\n\r\n| dev   | size     | erasesize | name             |\r\n| ----- | -------- | --------- | ---------------- |\r\n| mtd0  | 000e0000 | 00020000  | \"boot\"           |\r\n| mtd1  | 00020000 | 00020000  | \"env\"            |\r\n| mtd2  | 00020000 | 00020000  | \"env2\"           |\r\n| mtd3  | 00020000 | 00020000  | \"static_conf\"    |\r\n| mtd4  | 07c40000 | 00020000  | \"ubi_device\"     |\r\n| mtd5  | 00a89000 | 0001f000  | \"ubi_Config\"     |\r\n| mtd6  | 00a0d000 | 0001f000  | \"ubi_k0\"         |\r\n| mtd7  | 01911000 | 0001f000  | \"ubi_r0\"         |\r\n| mtd8  | 00a0d000 | 0001f000  | \"ubi_k1\"         |\r\n| mtd9  | 01911000 | 0001f000  | \"ubi_r1\"         |\r\n\r\nOnly the first 4 partitions with erasesize 0x20000 should be manipulated using mtd devices, the fifth partition `ubi_device` contains the rest of the NAND and is to be manipulated using ubi volumes\r\n\r\n## List of volumes (UBI)\r\n`ubinfo -a`\r\n\r\n| dev    | size      | type    | name             |\r\n| ------ | --------- | ------- | ---------------- |\r\n| ubi0_0 | 11046912B | dynamic | \"ubi_Config\"     |\r\n| ubi0_1 | 10539008B | dynamic | \"ubi_k0\"         |\r\n| ubi0_2 | 26284032B | dynamic | \"ubi_r0\"         |\r\n| ubi0_3 | 10539008B | dynamic | \"ubi_k1\"         |\r\n| ubi0_4 | 26284032B | dynamic | \"ubi_r1\"         |\r\n\r\nTo back up a volume, `cat` or `dd` the appropriate `/dev/ubi0_X` device to a file or pipe, to restore a volume, use the `ubiupdatevol` utility (or just do it safely via the WebGUI)\r\n\r\nThis ONT supports dual boot.\r\n\r\nVolumes `ubi_k0` and `ubi_r0` respectively contain kernel and rootfs of the first image, while `ubi_k1` and `ubi_r1` contain kernel and rootfs of the second one.\r\n\r\n# Useful files and binaries\r\n\r\n## Useful files\r\n- `/var/config/config.xml` - Contains the user portion of the configuration\r\n- `/var/config/config_hs.xml` - Contains the \"hardware\" configuration (which _should not_ be changed)\r\n- `/tmp/omcilog` - OMCI messages logs (must be enabeled, see below)\r\n\r\n## Useful binaries\r\n- `flash` - Used to manipulate the config files in a somewhat safe manner\r\n- `nv` - Used to manipulate nvram storage, including persistent config entries via `nv setenv`/`nv getenv`\r\n- `omcicli` - Used to interact with the running OMCI daemon\r\n- `omci_app` - The OMCI daemon\r\n- `diag` - Used to run low-level diagnostics commands on the stick\r\n\r\n# Usage\r\n\r\n## Enable telnet\r\nTelnet should be enabled by default but if that is not the case, you can enable it by editing configuration file you get in the Web UI. Go to `Admin -> Backup and Restore Settings -> Backup Settings to File` to get the config file in xml format and find `MIB_TELNET_ENABLE` and its value to 1. There is also `telnet` and `telnet_port` under `ACL_IP_TBL`, you should set these to 2 and 23 respectively.\r\n\r\n{% include alert.html content=\"Curiously, there is also `ssh` and `ssh_port` in there but changing these doesn't do anything for enabling SSH, most likely due to lack of ssh capability of this ONT\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\r\n\r\nAfter logining in using the credentials in the table above, use the `su` command to gain root access to the shell.\r\n```sh\r\n$ su\r\n# \r\n```\r\n\r\n# GPON ONU status\r\n\r\n## Getting the operational status of the ONU\r\n\r\n```sh\r\ndiag gpon get onu-state\r\n```\r\n\r\n## Getting OLT vendor information\r\n```sh\r\n# omcicli mib get 131\r\n```\r\n\r\n## Querying a particular OMCI ME\r\n```sh\r\n# omcicli mib get MIB_IDX\r\n```\r\n\r\n# GPON/OMCI settings\r\n\r\n## Getting/Setting ONU GPON Serial Number\r\n```sh\r\n# flash get GPON_SN\r\nGPON_SN=TMBB00000000\r\n# flash set GPON_SN TMBB0A1B2C3D\r\n```\r\n\r\n## Getting/Setting ONU GPON PLOAM password\r\n{% include alert.html content=\"The PLOAM password is stored in ASCII format\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\r\n\r\n```sh\r\n# flash get GPON_PLOAM_PASSWD\r\nGPON_PLOAM_PASSWD=AAAAAAAAAA\r\n# flash set GPON_PLOAM_PASSWD AAAAAAAAAA\r\n```\r\n\r\n## Getting/Setting ONU GPON LOID and LOID password\r\n```sh\r\n# flash get LOID\r\nLOID=user\r\n# flash set LOID user\r\n# flash get LOID_PASSWD\r\nLOID_PASSWD=user\r\n# flash set LOID_PASSWD user\r\n```\r\n\r\n## Getting/Setting OMCI software version (ME 7)\r\n```sh\r\n# flash get OMCI_SW_VER1\r\nOMCI_SW_VER1=YOURFIRSTSWVER\r\n# flash set OMCI_SW_VER1 YOURFIRSTSWVER\r\n# flash get OMCI_SW_VER2\r\nOMCI_SW_VER2=YOURSECONDSWVER\r\n# flash set OMCI_SW_VER2 YOURSECONDSWVER\r\n```\r\n\r\n## Getting/Setting OMCI hardware version (ME 256)\r\n```sh\r\n# flash get HW_HWVER\r\nHW_HWVER=V2.0\r\n# flash set HW_HWVER MYHWVERSION\r\n```\r\n\r\n## Getting/Setting OMCI vendor ID (ME 256)\r\n```sh\r\n# flash get PON_VENDOR_ID  \r\nPON_VENDOR_ID=ZTEG\r\n# flash set PON_VENDOR_ID HWTC\r\n```\r\n\r\n## Getting/Setting OMCI equipment ID (ME 257)\r\n```sh\r\n# flash get GPON_ONU_MODEL\r\nGPON_ONU_MODEL=DFP-34X-2C2\r\n# flash set GPON_ONU_MODEL DFP-34X-XXX\r\n```\r\n\r\n## Getting/Setting OMCI OLT Mode and Fake OMCI\r\n\r\nConfigure how ONT Stick handle OMCI from OLT:\r\n\r\n```sh\r\n# flash get OMCI_OLT_MODE\r\nOMCI_OLT_MODE=1\r\n# flash set OMCI_OLT_MODE 2\r\n```\r\n\r\n| Value | Note            | OMCI Information                                                                                       |\r\n| ----- | --------------- | ------------------------------------------------------------------------------------------------------ |\r\n| 0     | Default Mode    | Stock setting, some values cannot be changed                                                           |\r\n| 1     | Huawei OLT Mode | Huawei MA5671a                                                                                         |\r\n| 2     | ZTE OLT Mode    | ZTE                                                                                                    |\r\n| 3     | Customized Mode | Custom Software/Hardware Version, OMCC, etc...                                                         |\r\n\r\nSome vendors/wholesale providers/ISPs have explicit LAN Port Number provisioning or proprietary OMCI that the stick cannot understand, this will make the stick reply OK to whatever the OLT sends it via OMCI. \r\n\r\n`0` = Disable, `1` = Enable, Default is 0\r\n\r\n```sh\r\n# flash get OMCI_FAKE_OK\r\nOMCI_FAKE_OK=0\r\n# flash set OMCI_FAKE_OK 1\r\n```\r\n\r\n# Advanced settings\r\n\r\n## Transferring files to/from the router\r\n\r\nThis router has a capability of sharing files using ftp, tftp and netcat.\r\n\r\n## Setting management MAC\r\n```sh\r\n# flash get ELAN_MAC_ADDR\r\nELAN_MAC_ADDR=xxxxxxxxxxxx\r\n# flash set ELAN_MAC_ADDR xxxxxxxxxxxx\r\n```\r\n\r\n## Setting management IP\r\n```sh\r\n# flash get LAN_IP_ADDR\r\nLAN_IP_ADDR=192.168.2.1\r\n# flash set LAN_IP_ADDR 192.168.1.1\r\n```\r\n\r\n## Rebooting the ONU\r\n```sh\r\nreboot\r\n```\r\n\r\n## Getting/Setting the MTU of the L2 bridge\r\n{% include alert.html content=\"Settings given via diag are not permanent after reboot\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\r\n\r\n```sh\r\n# diag switch get max-pkt-len port all \r\nPort Speed \r\n---------- \r\n0 1538 \r\n2 2031 \r\n# diag switch set max-pkt-len port all length 2000\r\n```\r\n\r\n## Checking the currently active image\r\n```sh\r\n# nv getenv sw_active\r\nsw_active=1\r\n# nv getenv sw_version0\r\nsw_version0=V1_7_8_210412\r\n# nv getenv sw_version1\r\nsw_version1=V1_7_8_210412\r\n```\r\n\r\n## Booting to a different image\r\n```sh\r\n# nv setenv sw_commit 0|1\r\n# reboot\r\n```\r\n\r\n# Miscellaneous Links\r\n\r\n- [Configuration Manual which explains the Web UI of this ONT](https://www.bt-pon.com/download/Configuration_Manual/BT-7xx_and_BT-3xx_series_xPON_ONU_Configuration_Manual.pdf)\r\n- [Datasheet](https://www.bt-pon.com/download/Datasheet/BT-PON_BT-G711AX_XPON_ONU_ONT_Datasheet.pdf)\r\n\r\n\r\n# Theardown and other photos\r\n\r\n{% include image.html file=\"bt-g711ax-teardown-1.jpg\" alt=\"BT-PON BT-G711AX Board\" caption=\"BT-PON BT-G711AX Board\" %}\r\n{% include image.html file=\"bt-g711ax-teardown-2.jpg\" alt=\"BT-PON BT-G711AX Board (bottom side)\" caption=\"BT-PON BT-G711AX Board (bottom side)\" %}"
  },
  {
    "path": "_ont/ont-bt-pon.md",
    "content": "---\ntitle: BT-PON\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-calix-801gt.md",
    "content": "---\ntitle: Calix 801GT\nhas_children: false\nlayout: default\nparent: Calix\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Calix                            |\n| Model           | 801GT                            |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Calix GigaPoint ONTs](https://www.calix.com/platforms/premises-systems.html)\n"
  },
  {
    "path": "_ont/ont-calix-801gv2.md",
    "content": "---\ntitle: Calix GigaPoint 801Gv2\nhas_children: false\nlayout: default\nparent: Calix\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Calix                            |\n| Model           | GigaPoint 801Gv2                 |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Calix GigaPoint ONTs](https://www.calix.com/platforms/premises-systems.html)\n"
  },
  {
    "path": "_ont/ont-calix-gp1000g.md",
    "content": "---\ntitle: Calix GP1000g\nhas_children: false\nlayout: default\nparent: Calix\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Calix                            |\n| Model           | GP1000g                          |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Calix GigaPoint ONTs](https://www.calix.com/platforms/premises-systems.html)\n"
  },
  {
    "path": "_ont/ont-calix-gp1100g.md",
    "content": "---\ntitle: Calix GP1100G\nhas_children: false\nlayout: default\nparent: Calix\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Calix                            |\n| Model           | GP1100G                          |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Calix GigaPoint ONTs](https://www.calix.com/platforms/premises-systems.html)\n"
  },
  {
    "path": "_ont/ont-calix.md",
    "content": "---\ntitle: Calix\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-carlitoxxpro-cpgos03-0490-v1.md",
    "content": "---\ntitle: CarlitoxxPro CPGOS03-0490 v1\nhas_children: false\nredirect_to: /ont-hilink-hl23446\nlayout: default\nparent: CarlitoxxPro\n---"
  },
  {
    "path": "_ont/ont-carlitoxxpro-cpgos03-0490-v2.md",
    "content": "---\ntitle: CarlitoxxPro CPGOS03-0490 v2\nhas_children: false\nlayout: default\nparent: CarlitoxxPro\n---\n\n# Hardware Specifications\n\n|              |                                       |\n| ------------ | ------------------------------------- |\n| Vendor/Brand | CarlitoxxPro                          |\n| Model        | CPGOS03-0490 v2                       |\n| Chipset      | Realtek RTL9601CI                     |\n| Flash        | 8 MB                                  |\n| RAM          | 64 MB                                 |\n| System       | Linux (Luna SDK)                      |\n| HSGMII       | No                                    |\n| Optics       | SC/APC                                |\n| IP address   |                                       |\n| Web Gui      | ✅ user `cpAdmin`, password `cpAdmin` |\n| SSH          |                                       |\n| Telnet       | ✅                                    |\n| Serial       |                                       |\n| Form Factor  | miniONT SFP                           |\n\n# Known Bugs\n\n- VLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII\n\n- You should use the VID/VLAN shown by executing the command `omcicli mib get 84` via telnet to bring up PPPoE\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    flash='flash' \n    ploam='asciiAndHex' \n%}\n\n\n# Miscellaneous Links\n\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n- [GPON ONU SFP - CPGOS03-0490 v2.0: Configuration Manual 1.0](https://wiki.rockstable.it/FTTH?action=AttachFile&do=get&target=CPGOS03-0490v2_Configuration-Manual.pdf)\n\n"
  },
  {
    "path": "_ont/ont-carlitoxxpro.md",
    "content": "---\ntitle: CarlitoxxPro\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-cig-g-97c1.md",
    "content": "---\ntitle: CIG G-97C1\nhas_children: false\nredirect_to: /ont-nokia-g-010g-p\nlayout: default\nparent: CIG\n---"
  },
  {
    "path": "_ont/ont-cig-g-97cm.md",
    "content": "---\ntitle: CIG G-97CM\nhas_children: false\nlayout: default\nparent: CIG\n---\n\n# Hardware Specifications\n\n|                  |                  |\n| ---------------- | ---------------- |\n| Vendor/Brand     | CIG              |\n| Model            | G-97CM           |\n| ODM              | ✅               |\n| Chipset          | Realtek RTL9601B |\n| Flash            |                  |\n| RAM              |                  |\n| System           | Linux            |\n| 2.5GbaseT        | No               |\n| Optics           | SC/APC           |\n| IP address       | 192.168.1.1      |\n| Web Gui          |                  |\n| SSH              |                  |\n| Telnet           |                  |\n| Serial           | ✅               |\n| Serial baud      | 115200           |\n| Serial encoding  | 8-N-1            |\n| Form Factor      | ONT              |\n\n# Miscellaneous Links\n\n- [CUG G-97CM DataSheet](https://www.cigtech.com/wp-content/uploads/2018/02/G-97CM_DataSheet_V3.pdf)\n\n\n\n\n\n\n"
  },
  {
    "path": "_ont/ont-cig-g-97cp.md",
    "content": "---\ntitle: CIG G-97CP\nhas_children: false\nlayout: default\nparent: CIG\n---\n\n# Hardware Specifications\n\n|                  |                                                                          |\n| ---------------- | ------------------------------------------------------------------------ |\n| Vendor/Brand     | CIG                                                                      |\n| Model            | G-97CP                                                                   |\n| ODM              | ✅                                                                       |\n| Chipset          | Realtek RTL9601D                                                         |\n| Flash            |                                                                          |\n| RAM              |                                                                          |\n| System           | Linux (Luna SDK 1.9.0)                                                   |\n| 2.5GbaseT        | Yes                                                                      |\n| Optics           | SC/APC                                                                   |\n| IP address       | 192.168.100.1                                                            |\n| Web Gui          |                                                                          |\n| SSH              | ✅ user ```root```, password same as [enable](#enable-password) password |\n| Telnet           |                                                                          |\n| Serial           | ✅                                                                       |\n| Form Factor      | ONT                                                                      |\n\n{% include image.html file=\"cig/cig-1.jpg\" alt=\"CIG G-97CP Unidata\" caption=\"CIG G-97CP Unidata <a href='https://forum.fibra.click/u/papin'>@papin</a>\" %} \n{% include image.html file=\"cig/cig-2.jpg\" alt=\"CIG G-97CP Unidata\" caption=\"CIG G-97CP Unidata <a href='https://forum.fibra.click/u/papin'>@papin</a>\" %}\n\n{% include_relative ont-nokia-use.md username=\"ont\" alertEnablePassword=\"The following enable password is used to enter GponCLI via serial connection in in firmware where it is not disabled.\" %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n# Note\n\nThis ONT has the same internal hardware as the [Nokia G-010G-T](/ont-nokia-g-010g-t) and even the same plastic shell of the [ZTE F6005](/ont-zte-f6005).\n\n\n"
  },
  {
    "path": "_ont/ont-cig-g-97s.md",
    "content": "---\ntitle: CIG G-97S\nhas_children: false\nredirect_to: /ont-nokia-g-010s-q\nlayout: default\nparent: CIG\n---"
  },
  {
    "path": "_ont/ont-cig-g-97sp.md",
    "content": "---\ntitle: CIG G-97SP\nhas_children: false\nlayout: default\nparent: CIG\n---\n\n# Hardware Specifications\n\n|                  |                 |\n| ---------------- | --------------- |\n| Vendor/Brand     | CIG             |\n| Model            | G-97SP          |\n| ODM              | ✅              |\n| Chipset          | Lantiq PEB98035 |\n| CPU              |                 |\n| CPU Clock        |                 |\n| Flash            |                 |\n| RAM              |                 |\n| HSGMII           |                 |\n| Optics           | SC              |\n| IP address       |                 |\n| Web Gui          |                 |\n| SSH              |                 |\n| Telnet           |                 |\n| Serial           |                 |\n| Form Factor      | miniONT SFP     |\n\n# Miscellaneous Links\n\n- [GPON ONT G-95SP Platform Briefing](https://www.cigtech.com/wp-content/uploads/2018/03/G-95SP_DataSheet_V2.pdf)\n- [Tech Info Depot Wiki](http://en.techinfodepot.shoutwiki.com/wiki/Cigtech_G-95SP)\n- [OpenWrt Forum](https://forum.openwrt.org/t/cigtech-g-95sp-sfp-gpon/63352)\n"
  },
  {
    "path": "_ont/ont-cig.md",
    "content": "---\ntitle: CIG\nhas_children: true\nlayout: default\n---\n\n\n\n\n\n"
  },
  {
    "path": "_ont/ont-d-link-dpn-100-rev-a2.md",
    "content": "---\ntitle: D-LINK DPN-100 Rev A2\nhas_children: false\nlayout: default\nparent: D-LINK\n---\n\n# Hardware Specifications\n\n|                  |                 |\n| ---------------- | --------------- |\n| Vendor/Brand     | D-LINK          |\n| Model            | DPN-100 Rev A2  |\n| Chipset          | Lantiq PEB98035 |\n| ODM              | T&W             |\n| ODM Product Code | TW2362H-CDEL    |\n| Flash            | 8 MB            |\n| RAM              | 64 MB           |\n| System           |                 |\n| HSGMII           |                 |\n| Optics           |                 |\n| IP address       |                 |\n| Web Gui          |                 |\n| SSH              |                 |\n| Telnet           |                 |\n| Serial           |                 |\n| Form Factor      | miniONT SFP     |\n\n{% include image.html file=\"dpn-100-rev-a2.jpg\"  alt=\"DPN-100 Rev A2\" caption=\"DPN-100 Rev A2\" %}\n\n\nOnce you access the stick via ssh you will be presented with a second tier login. The credentials to access the dell shell are: username: `twmanu` , password: `twmanu`.\n\n\n## Firmware is interchangeable with:\n\n- [Zyxel PMG3000-D20B](/ont-zyxel-pmg3000-d20b)\n- [Halny HL-GSFP](/ont-halny-hl-gsfp)\n- [Zisa OP151s](/ont-zisa-op151s)\n- [T&W TW2362H-CDEL](/ont-t-w-tw2362h-cdel)\n\n# GPON/OMCI settings\n\n{% include alert.html content=\"All commands start from the twmanu shell.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n## Setting ONU GPON Serial Number\n{% include alert.html content=\"The S/N is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```sh\nmanufactory\nset sn ALCLf0f0f0f0\nexit\nhal\nset sn ALCLf0f0f0f0\n```\n\n## Setting ONU GPON PLOAM password\n\n{% include alert.html content=\"The PLOAM password is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\nThis can be done easily via the web UI. If you prefer to do it via the shell use:\n```sh\nmanufactory\nset password 1234567899\n```\n\nor in hex format without any 0x or separator:\n```sh\nmanufactory\nset password hex 31323334353637383939\n```\n\n## Show ONU GPON info\n```sh\nshow info\n```\n\n# Miscellaneous Links\n\n- [Dlink DPN 100 Change of Serial Number and PLOAM Password](https://www.youtube.com/watch?v=5hpMPJCpUaQ)\n\n\n\n"
  },
  {
    "path": "_ont/ont-d-link-dpn-100-rev-c1.md",
    "content": "---\ntitle: D-LINK DPN-100 Rev C1\nhas_children: false\nlayout: default\nparent: D-LINK\n---\n\n# Hardware Specifications\n\n|                  |                                                          |\n| ---------------- | -------------------------------------------------------- |\n| Vendor/Brand     | D-LINK                                                   |\n| Model            | DPN-100 Rev C1                                           |\n| ODM              | CIG                                                      |\n| ODM Product Code | [G-97S](/ont-cig-g-97s)                                  |\n| Chipset          | Realtek RTL9601CI                                        |\n| Flash            | 16MB                                                     |\n| RAM              | 32MB                                                     |\n| System           | Linux (Luna SDK 1.9.0)                                   |\n| HSGMII           | ✅                                                       |\n| Optics           | SC/APC                                                   |\n| IP address       | 192.168.100.1                                            |\n| Web Gui          |                                                          |\n| SSH              |                                                          |\n| Telnet           | ✅ user `root`, password `admin` (only on R4.2.104.033e) |\n| Serial           |                                                          |\n| Form Factor      | miniONT SFP                                              |\n\n{% include image.html file=\"dpn-100-rev-c1.png\"  alt=\"DPN-100 Rev C1\" caption=\"DPN-100 Rev C1\" %}\n\n## List of software versions\n- R4.2.104.033e (Wind - has telnet enabled)\n- R4.2.104.039 (Wind - no telnet access)\n\n## List of partitions\n\n| dev  | size     | erasesize | name     |\n| ---- | -------- | --------- | -------- |\n| mtd0 | 00080000 | 00010000  | \"Boot\"   |\n| mtd1 | 00180000 | 00010000  | \"Config\" |\n| mtd2 | 00700000 | 00010000  | \"ImageA\" |\n| mtd3 | 00700000 | 00010000  | \"ImageB\" |\n\n\n{% include_relative ont-nokia-useful-command.md %}\n\n# Miscellaneous Links\n\n- [DLINK DPN-100 Ver:C1 uses RTL9601CI](https://github.com/Anime4000/RTL960x/issues/2)\n"
  },
  {
    "path": "_ont/ont-d-link.md",
    "content": "---\ntitle: D-LINK\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-fibermall-gpon-onu-clb+.md",
    "content": "---\ntitle: FiberMall GPON-ONU-CLB+\nhas_children: false\nlayout: default\nparent: FiberMall\n---\n\n{% include alert.html content=\"This is a raw GPON ONU SFP transceiver <strong>without MAC function</strong>. It requires an external PON MAC to operate. For the ONU Stick with integrated MAC, see <a href='/ont-fibermall-gpon-onu-stb+'>FiberMall GPON-ONU-STB+</a>. See also <a href='/sfp-standard'>SFP Standard</a> and <a href='/ont-wo-mac'>SFP with PON MAC and w/o PON MAC</a> for background.\" alert=\"Warning\" icon=\"svg-warning\" color=\"yellow\" %}\n\n# Hardware Specifications\n\n|                       |                                                                       |\n| --------------------- | --------------------------------------------------------------------- |\n| Vendor/Brand          | FiberMall                                                             |\n| Model                 | GPON-ONU-CLB+                                                         |\n| Chipset               |                                                                       |\n| Optics                | SC/UPC                                                                |\n| Form Factor           | SFP                                                                   |\n| PON MAC               | ❌ None (raw transceiver, requires external PON MAC)                  |\n\n## Product Variants\n\n| Part Number      | TX Enable | Temperature  | Price  |\n| ---------------- | --------- | ------------ | ------ |\n| GPON-ONU-CLB+    | Low level | -5 to 70°C   | $15.00 |\n| GPON-ONU-ILB+    | Low level | -40 to 85°C  |        |\n| GPON-ONU-CHB+    | High level| -5 to 70°C   |        |\n| GPON-ONU-IHB+    | High level| -40 to 85°C  |        |\n\nAll variants: SFP, TX-1.244G/RX-2.488G, T1310nm/R1490nm, GPON Class B+, no MAC, DDM.\n\n## Datasheet Specifications\n\n### General\n\n|                              |                                            |\n| ---------------------------- | ------------------------------------------ |\n| TX Data Rate                 | 1.244 Gbps (burst mode)                   |\n| RX Data Rate                 | 2.488 Gbps (continuous mode)              |\n| Max Distance                 | 20 km                                      |\n| Fiber Type                   | Single Mode 9/125 µm                      |\n| Class                        | B+                                         |\n| Power Supply                 | 3.3V ± 5% (3.135–3.465V)                  |\n| Supply Current               | 300 mA max                                 |\n| Power Consumption            | 1 W                                        |\n| Operating Temperature        | -5 to 70°C (C-Temp) / -40 to 85°C (I-Temp)|\n| DDM                          | ✅ SFF-8472                                |\n\n### Transmitter Optical Characteristics\n\n| Parameter                          | Min    | Typical | Max    | Unit   |\n| ---------------------------------- | ------ | ------- | ------ | ------ |\n| Launched Power (avg.)              | +0.5   |         | +5.0   | dBm    |\n| Operating Wavelength Range         | 1260   |         | 1360   | nm     |\n| Output Spectrum Width (RMS)        |        |         | 1.0    | nm     |\n| Side Mode Suppression Ratio        | 30     |         |        | dB     |\n| Extinction Ratio                   | 9      |         |        | dB     |\n| Optical Rise Time                  |        |         | 260    | ps     |\n| Optical Fall Time                  |        |         | 260    | ps     |\n| Output Power After TX Disable      |        |         | -50    | dBm    |\n| Burst Turn-On Time                 |        |         | 12.8   | ns     |\n| Burst Turn-Off Time                |        |         | 12.8   | ns     |\n| TX Reflectance                     |        |         | -15    | dB     |\n\n### Receiver Optical Characteristics\n\n| Parameter                          | Min    | Typical | Max    | Unit   |\n| ---------------------------------- | ------ | ------- | ------ | ------ |\n| Wavelength Range                   | 1480   |         | 1500   | nm     |\n| Sensitivity (BER ≤ 10⁻¹²)         |        |         | -28    | dBm    |\n| Saturation Optical Power           | -8     |         |        | dBm    |\n| SD Assert Level                    |        |         | -29    | dBm    |\n| SD Deassert Level                  | -45    |         |        | dBm    |\n| SD Hysteresis                      | 0.5    |         | 6      | dB     |\n| Receiver Reflectance               |        |         | -12    | dB     |\n\n### Electrical Characteristics\n\n| Parameter                          | Min    | Typical | Max    | Unit   |\n| ---------------------------------- | ------ | ------- | ------ | ------ |\n| TX Differential Input Voltage      | 300    |         | 2400   | mV     |\n| RX Differential Output Voltage     | 500    |         | 1200   | mV     |\n| TX Common-Mode Input Voltage       | 1.6    |         | 2.4    | V      |\n| Input Differential Impedance       | 90     | 100     | 110    | Ω      |\n| TX Fault Output (Normal)           | 0      |         | 0.4    | V      |\n| TX Fault Output (Fault)            | 2.4    |         | VCC+0.3| V      |\n| SD Assert Time                     |        |         | 100    | µs     |\n| SD Deassert Time                   |        |         | 100    | µs     |\n\nTransmitter: 1310 nm DFB laser, LVPECL input (DC coupled). Receiver: 1490 nm Super-TIA, CML output (AC coupled).\n\n### DDM Accuracy\n\n| Parameter    | Accuracy |\n| ------------ | -------- |\n| Temperature  | ±3°C     |\n| Voltage      | ±3%      |\n| Bias Current | ±10 mA   |\n| TX Power     | ±3 dB    |\n| RX Power     | ±3 dB    |\n\n## Pin Definition\n\n| Pin | Name       | Description                                                                  |\n| --- | ---------- | ---------------------------------------------------------------------------- |\n| 1   | VeeT       | Transmitter Ground                                                           |\n| 2   | TX_Fault   | Transmitter Fault Indication (LVTTL output: low = normal, high = abnormal)   |\n| 3   | TX_Burst   | **Transmitter Burst Enable Input** (LVTTL)                                   |\n| 4   | MOD-DEF(2) | I²C Data (SDA), LVTTL                                                        |\n| 5   | MOD-DEF(1) | I²C Clock (SCL), LVTTL                                                       |\n| 6   | MOD-DEF(0) | Module Definition 0, grounded within module                                  |\n| 7   | TX_SD      | **Transmitter Signal Detect** (LVTTL output, active high)                    |\n| 8   | RX_SD      | **Receiver Signal Detect** (LVTTL output: high = signal, low = loss)         |\n| 9   | VeeR       | Receiver Ground                                                              |\n| 10  | VeeR       | Receiver Ground                                                              |\n| 11  | VeeR       | Receiver Ground                                                              |\n| 12  | RD-        | Inverted Receiver Data Out (CML, AC coupled)                                 |\n| 13  | RD+        | Receiver Data Out (CML, AC coupled)                                          |\n| 14  | VeeR       | Receiver Ground                                                              |\n| 15  | VccR       | Receiver Power                                                               |\n| 16  | VccT       | Transmitter Power                                                            |\n| 17  | VeeT       | Transmitter Ground                                                           |\n| 18  | TD+        | Transmit Data In (LVPECL, DC coupled)                                        |\n| 19  | TD-        | Inverted Transmit Data In (LVPECL, DC coupled)                               |\n| 20  | VeeT       | Transmitter Ground                                                           |\n\n{% include alert.html content=\"Note the key Pin differences vs the <a href='/ont-fibermall-gpon-onu-stb+'>STB+ (with MAC)</a>: Pin 3 is TX_Burst (burst enable) instead of TX_Disable, Pin 7 is TX_SD (transmitter signal detect) instead of Dying Gasp, and Pin 8 is RX_SD instead of LOS.\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n### EEPROM (A0h) Key Fields\n\n| Address | Field           | Value        | Description                         |\n| ------- | --------------- | ------------ | ----------------------------------- |\n| 00      | Identifier      | 03           | SFP                                 |\n| 01      | Ext. Identifier | 04           | Module soldered to motherboard      |\n| 02      | Connector       | 01           | Optical Pigtail                     |\n| 11      | Encoding        | 03           | NRZ                                 |\n| 12      | BR, Nominal     | 0C           | 1.2 Gbps                            |\n| 14      | Length (9µm km) | 14           | 20 km                               |\n| 40–55   | Vendor P/N      | GPON-ONU-xxB+| ASCII                               |\n| 60–61   | Laser Wavelength| 051E         | 1310 nm                             |\n| 92      | Diag. Mon. Type | 68           | Internal calibration, avg. power RX |\n\n## Standards Compliance\n\n- ITU-T G.984.2 (GPON)\n- SFP MSA (SFF-8074i)\n- SFF-8472 (DDM)\n- FCC 47 CFR Part 15, Class B\n- FDA 21 CFR 1040.10 and 1040.11 (Laser Notice No. 50)\n- IEC-60825 (Class 1 laser safety)\n- Telcordia GR-468-CORE\n- TR-NWT-000870 ESD Class 2\n\n## Key Differences vs STB+ (with MAC)\n\n| Feature              | CLB+ (no MAC)                | STB+ (with MAC)                      |\n| -------------------- | ---------------------------- | ------------------------------------ |\n| PON MAC              | ❌ None                      | ✅ Integrated                        |\n| Receiver Type        | Super-TIA                    | APD-TIA                              |\n| Power Consumption    | 1 W                          | 2.48 W                               |\n| GPON/EPON Dual-Mode  | ❌ GPON only                 | ✅ Auto-detect GPON/EPON             |\n| OMCI (G.988)         | ❌                           | ✅                                   |\n| Pin 3                | TX_Burst (burst enable)      | TX_Disable                           |\n| Pin 7                | TX_SD (TX signal detect)     | Dying Gasp detect                    |\n| Pin 8                | RX_SD (RX signal detect)     | LOS                                  |\n| Price                | $15.00                       | $45.00                               |\n\n{% include alert.html content=\"This page has been created from the vendor datasheet and product listing. Contributions with hands-on information are welcome.\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n# Miscellaneous Links\n\n- [FiberMall GPON-ONU-CLB+ product page](https://www.fibermall.com/sale-437481-gpon-onu-sfp-tx1310nm-class-b.htm)\n- [Datasheet (PDF)](https://www.fibermall.com/file/datasheet/gpon-onu-xxb%2B.pdf)\n"
  },
  {
    "path": "_ont/ont-fibermall-gpon-onu-stb+.md",
    "content": "---\ntitle: FiberMall GPON-ONU-STB+\nhas_children: false\nlayout: default\nparent: FiberMall\n---\n\n{% include alert.html content=\"This is an ONU Stick SFP with integrated GPON MAC. For the raw SFP transceiver without MAC, see [FiberMall GPON-ONU-CLB+](/ont-fibermall-gpon-onu-clb+).\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Hardware Specifications\n\n|                       |                                                                       |\n| --------------------- | --------------------------------------------------------------------- |\n| Vendor/Brand          | FiberMall                                                             |\n| Model                 | GPON-ONU-STB+ (SC/UPC) / GPON-ONU-STAB+ (SC/APC)                    |\n| Chipset               | Unknown                                                               |\n| Flash                 |                                                                       |\n| RAM                   |                                                                       |\n| System                |                                                                       |\n| HSGMII                |                                                                       |\n| Optics                | SC/UPC or SC/APC                                                      |\n| IP address            |                                                                       |\n| Web Gui               |                                                                       |\n| SSH                   |                                                                       |\n| Telnet                |                                                                       |\n| Serial                |                                                                       |\n| Form Factor           | miniONT SFP                                                           |\n\n## Product Variants\n\n| Part Number      | Connector | Temperature  | Price  |\n| ---------------- | --------- | ------------ | ------ |\n| GPON-ONU-STB+    | SC/UPC    | 0 to 70°C    | $45.00 |\n| GPON-ONU-ISTB+   | SC/UPC    | -40 to 85°C  |        |\n| GPON-ONU-STAB+   | SC/APC    | 0 to 70°C    | $45.00 |\n| GPON-ONU-ISTAB+  | SC/APC    | -40 to 85°C  |        |\n\nAll variants: SFP, TX-1.244G/RX-2.488G, T1310nm/R1490nm, GPON Class B+, MAC inside, RoHS 6, DDM.\n\n## Datasheet Specifications\n\n### General\n\n|                              |                                            |\n| ---------------------------- | ------------------------------------------ |\n| TX Data Rate                 | 1.244 Gbps (burst mode)                   |\n| RX Data Rate                 | 2.488 Gbps (continuous mode)              |\n| Max Distance                 | 20 km                                      |\n| Fiber Type                   | Single Mode 9/125 µm                      |\n| Class                        | B+                                         |\n| Power Supply                 | 3.3V ± 5% (3.13–3.47V)                    |\n| Power Dissipation            | 2.48 W typical                             |\n| Operating Temperature        | 0 to 70°C (C-Temp) / -40 to 85°C (I-Temp) |\n| DDM                          | ✅ SFF-8472 v9.5                           |\n\n### Transmitter Optical Characteristics\n\n| Parameter                          | Min    | Typical | Max    | Unit   |\n| ---------------------------------- | ------ | ------- | ------ | ------ |\n| Centre Wavelength                  | 1290   |         | 1330   | nm     |\n| Side Mode Suppression Ratio        | 30     |         |        | dB     |\n| Optical Spectrum Width (RMS)       |        |         | 1      | nm     |\n| Average Launch Power               | +0.5   |         | +5.0   | dBm    |\n| Power-OFF TX Optical Power         |        |         | -45    | dBm    |\n| Extinction Ratio                   | 9      |         |        | dB     |\n| Rise/Fall Time (20%-80%)           |        |         | 260    | ps     |\n| Burst Turn-On Time                 |        |         | 12.8   | ns     |\n| Burst Turn-Off Time                |        |         | 12.8   | ns     |\n| RIN15 OMA                          |        |         | -115   | dB/Hz  |\n| Optical Return Loss Tolerance      | 15     |         |        | dB     |\n| TX Reflectance                     |        |         | -6     | dB     |\n| TX and Dispersion Penalty          |        |         | 2      | dB     |\n\n### Receiver Optical Characteristics\n\n| Parameter                          | Min    | Typical | Max    | Unit   |\n| ---------------------------------- | ------ | ------- | ------ | ------ |\n| Operating Wavelength               | 1480   | 1490    | 1500   | nm     |\n| Sensitivity (BER 10⁻¹²)           |        |         | -28    | dBm    |\n| Saturation Optical Power           | -8     |         |        | dBm    |\n| LOS Deassert Level                 |        |         | -29    | dBm    |\n| LOS Assert Level                   | -40    |         |        | dBm    |\n| LOS Hysteresis                     | 0.5    |         | 5      | dB     |\n| Receiver Reflectance               |        |         | -20    | dB     |\n| WDM Filter Isolation (1550 nm)     | 38     |         |        | dB     |\n| WDM Filter Isolation (1650 nm)     | 35     |         |        | dB     |\n\n### Electrical Characteristics\n\n| Parameter                          | Min    | Typical | Max    | Unit   |\n| ---------------------------------- | ------ | ------- | ------ | ------ |\n| Data Input Differential Swing      | 300    |         | 1600   | mV     |\n| Data Output Differential Swing     | 300    |         | 1200   | mV     |\n| Input Differential Impedance       | 90     | 100     | 110    | Ω      |\n| TX Disable Voltage (Enable)        | 0      |         | 0.8    | V      |\n| TX Disable Voltage (Disable)       | 2.0    |         | VCC    | V      |\n\nTransmitter: 1310 nm DFB laser. Receiver: 1490 nm APD-TIA, CML output (AC coupled).\n\n## Pin Definition\n\n| Pin | Name       | Description                                                            |\n| --- | ---------- | ---------------------------------------------------------------------- |\n| 1   | VeeT       | Transmitter Ground                                                     |\n| 2   | TX Fault   | Transmitter Fault Indication (LVTTL output: low = normal, high = fault)|\n| 3   | TX Disable | Transmitter Disable; turns off transmitter laser output                |\n| 4   | MOD-DEF(2) | SDA I²C Data line                                                      |\n| 5   | MOD-DEF(1) | SCL I²C Clock line                                                     |\n| 6   | MOD-DEF(0) | Module Absent, connected to VeeR                                       |\n| 7   | RateSelect | **Dying Gasp detect** (input, active low)                              |\n| 8   | LOS        | Loss of Signal                                                         |\n| 9   | VeeR       | Receiver Ground                                                        |\n| 10  | VeeR       | Receiver Ground                                                        |\n| 11  | VeeR       | Receiver Ground                                                        |\n| 12  | RD-        | Inverted Received Data Output                                          |\n| 13  | RD+        | Received Data Output                                                   |\n| 14  | VeeR       | Receiver Ground                                                        |\n| 15  | VccR       | Receiver Power                                                         |\n| 16  | VccT       | Transmitter Power                                                      |\n| 17  | VeeT       | Transmitter Ground                                                     |\n| 18  | TD+        | Transmit Data In                                                       |\n| 19  | TD-        | Inverted Transmit Data In                                              |\n| 20  | VeeT       | Transmitter Ground                                                     |\n\n## Standards Compliance\n\n- ITU-T G.984.2 / G.984.2 Amendment 1 (GPON)\n- ITU-T G.988 (OMCI)\n- SFP MSA (SFF-8074i)\n- SFF-8472 v9.5 (DDM)\n- FCC 47 CFR Part 15, Class B\n- FDA 21 CFR 1040.10 and 1040.11\n- IEC-60825 (Class 1 laser safety)\n\n## Notes\n\n- The GPON-ONU-STB+ is described as a **dual-mode ONU stick**: it supports both GPON and EPON ONU OAM and will automatically establish a link with either a GPON OLT or EPON OLT.\n- Pin 7 (RateSelect) is repurposed for **Dying Gasp detection** (input, active low).\n- Data input is LVPECL compatible, DC coupled internally.\n- Receiver is APD-TIA based, providing higher sensitivity than the [non-MAC CLB+ variant](/ont-fibermall-gpon-onu-clb+) which uses Super-TIA.\n- This is a complete \"PON on a Stick\" — an entire FTTH ONU in a slightly oversized SFP that can be plugged into networking equipment (switch, router, PBX, etc.).\n\n{% include alert.html content=\"This page has been created from the vendor datasheet and product listing. Contributions with hands-on information (chipset identification, firmware details, serial/SSH access, IP address, web GUI, etc.) are very welcome.\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n# Miscellaneous Links\n\n- [FiberMall GPON-ONU-STAB+ product page (SC/APC)](https://www.fibermall.com/sale-462750-gpon-onu-sticak-sfp-class-b-apc.htm)\n- [FiberMall GPON-ONU-STB+ product page (SC/UPC)](https://www.fibermall.com/sale-437801-gpon-onu-sticak-sfp-class-b.htm)\n- [Datasheet (PDF)](https://www.fibermall.com/file/datasheet/gpon-onu-stb%2B.pdf)\n"
  },
  {
    "path": "_ont/ont-fibermall.md",
    "content": "---\ntitle: FiberMall\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont/ont-fs-com-gpon-onu-stick-with-mac.md",
    "content": "---\ntitle: FS.com GPON ONU Stick with MAC (GPON-ONU-34-20BI)\nhas_children: true\nalias: SourcePhotonics SPS-34-24T-HP-TDFO\nparent: FS.com\nlayout: default\n---\n\n# Hardware Specifications\n\n|                  |                                          |\n| ---------------- | ---------------------------------------- |\n| Vendor/Brand     | FS.com                                   |\n| Model            | GPON-ONU-34-20BI                         |\n| ODM              | SourcePhotonics                          |\n| ODM Product Code | SPS-34-24T-HP-TDFO                       |\n| Chipset          | Lantiq PEB98035                          |\n| CPU              | MIPS 34Kc interAptiv                     |\n| CPU Clock        | 400MHz                                   |\n| Flash            | 16 MB                                    |\n| RAM              | 64 MB                                    |\n| Bootloader       | U-Boot 2011.12-lantiq-gpon-1.2.24        |\n| System           | OpenWRT 14.07_ltq (Kernel 3.10.49)       |\n| Load addr        | 0x80800000                               |\n| HSGMII           | Yes                                      |\n| Optics           | SC/APC                                   |\n| IP address       | 192.168.1.10                             |\n| Web Gui          |                                          |\n| SSH              | ✅ user `ONTUSER`, password `7sp!lwUBz1` |\n| Telnet           |                                          |\n| Serial           | ✅ on SFP                                |\n| Serial baud      | 115200                                   |\n| Serial encoding  | 8-N-1                                    |\n| Form Factor      | miniONT SFP                              |\n\n{% include image.html file=\"ont-fs.jpg\" alt=\"FS.com GPON ONU\" caption=\"FS.com GPON ONU\" %}\n{% include image.html file=\"ont-fs-box.jpg\" alt=\"FS.com GPON ONU in the box\" caption=\"FS.com GPON ONU in the box\" %}\n\n## Possible clones\n\n- SourcePhotonics SPS-34-24T-HP-TDFO\n\n## Firmware is interchangeable with:\n\n- [Huawei MA5671A](/ont-huawei-ma5671a)\n- [Nokia G-010S-P](/ont-nokia-g-010s-p)\n- [Hilink HL23446](/ont-hilink-hl23446)\n- {:.text-red-200 } Dasan H650SFP \n- {:.text-red-200 } DpOptics D23446  \n- {:.text-red-200 } Photonics SPS-34-24T-HP-TDFO\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the SFP connector.\n\n| USB TTL(UART) Adapter | SFP 20pins Molex connector |\n| --------------------- | -------------------------- |\n| 3.3V                  | pin #15 and #16            |\n| TX                    | pin #2                     |\n| RX                    | pin #7                     |\n| GND                   | pin #14                    |\n\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n\n## List of software versions\n- 6BA1896SPLQA13 (Dec 16 2016)\n- 6BA1896SPLQA41\n- 6BA1896SPLQA42 (Sep 18 2021)\n\n## List of partitions\n\nPartition layouts change depending on which image is booted, in particular:\n\nWhen booting image0:\n```\nmtd2 ---> image0 (linux)\nmtd5 --> image1\nmtd3 --> rootfs\nmtd4 --> rootfs_data\n```\nWhen booting image0:\n```\nmtd2 ---> image0\nmtd3 --> image1 (linux)\nmtd4 --> rootfs\nmtd5 --> rootfs_data\n```\n\nFor more info [XPONos partition layout](https://github.com/XPONos/linux_lantiq-falcon/commit/456f68f69a84c846a542a9f0ea47c37476535dcb).\n\n### When booting from image0\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 00740000 | 00010000  | \"linux\"       |\n| mtd3 | 0061eedc | 00010000  | \"rootfs\"      |\n| mtd4 | 00370000 | 00010000  | \"rootfs_data\" |\n| mtd5 | 00800000 | 00010000  | \"image1\"      |\n\n### When booting from image1\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 00740000 | 00010000  | \"image0\"      |\n| mtd3 | 00800000 | 00010000  | \"linux\"       |\n| mtd4 | 006d8077 | 00010000  | \"rootfs\"      |\n| mtd5 | 00410000 | 00010000  | \"rootfs_data\" |\n\n## List of firmwares and files\n- [6BA1896SPLQA13 MTD0/U-Boot](https://mega.nz/file/wptjyYiS#Xj3cijX2bN0FexsZr1Wn7iRG0Wy4Z8vX0NyNBd1kBWo){: .btn } md5hash: 992b31a67c644aa68cf7f9caf956b1f9\n- [6BA1896SPLQA13 MTD2/Image0](https://mega.nz/file/1kUlUbgQ#ANS9qH6wCggYshsQ3STD6gxmR_3TL-5MXfdCl5s50Nk){: .btn } md5hash: 5d46a9acc3c5ba8710887aa32b82aeb4\n- [6BA1896SPLQA42 MTD0/U-Boot](https://mega.nz/file/FkswHbgL#s7-vaH65EPQ2O5vKeD3bU1_RPwzaKPOJdrCWvPQqDvc){: .btn } md5hash: 992b31a67c644aa68cf7f9caf956b1f9\n- [6BA1896SPLQA42 MTD2/Image0](https://mega.nz/file/AgshDICC#md1vLN14JBF3iaNoZBqQH_zwALHmEaOk3_rDm1FfOic){: .btn } md5hash: 04533554bb0c8b997697fbc048159002\n\n# Unlock the device\n\n{% include alert.html content=\"The following commands are to be used on version 6BA1896SPLQA42, to get the commands for version 6BA1896SPLQA41 please check the following page: [Carlito Firmware](/ont-huawei-ma5671a-carlito).\" alert=\"Note\" icon=\"svg-info\" color=\"blu\" %}\n\n\n## Bootloader unlock from shell\n{% include alert.html content=\"It is strongly recommended that you unlock the bootloader before making any major changes to the firmware.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"yellow\" %}\n```sh\nfw_setenv bootdelay 5\nfw_setenv asc0 0\nfw_setenv preboot \"gpio set 3;gpio input 2;gpio input 105;gpio input 106;gpio input 107;gpio input 108\"\n```\n\n## Emergency bootloader unlock via TTL serial\n\n{% include alert.html content=\"This is not necessary if you have already unlocked the bootloader from the shell as specified above.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"yellow\" %}\n\nIf for some reason you are in the situation where you do not have a bootable firmware on your SFP stick you can do an emergency unlock via TTL serial.\n\nTo perform the emergency unlock, the following hardware is required:\n- TTL-USB adapter,\n- SFP adapter to connect the TTL-USB cables to the SFP stick.\n\nThe electrical connections are the same as those of the Huawei MA5671A; see the [Huawei root guide](/ont-huawei-ma5671a-root-web) for accurate details on how to connect the TTL-USB to the SFP adapter.\n\nWhen you are ready with everything plugged in you need to press the button below. A window will open to execute the emergency unlock.\n\n{: .text-center .fs-6 }\n<button id=\"start-button\" class=\"btn btn-blue\" data-jtd-toggle=\"modal\" data-jtd-target=\"#root-modal\" disabled>Start emergency unlock!</button>\n<div id=\"browser-error\" style=\"display:none\">{% include alert.html content=\"This browser is not compatible with the emergency unlock procedure. See the <a href='https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility'>Browser compatibility</a>\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}</div>\n{% include root_lantiq.html modelName=\"FS GPON ONU Stick\" unlockHuaweiShell=false %}\n<noscript>\n{% include alert.html content=\"Your browser does not support JavaScript!\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n</noscript>\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\n```shell\nonu ploamsg\n```\n\n## Querying a particular OMCI ME\n```sh\nomci_pipe.sh meg MIB_IDX ME_IN\n```\nWhere `MIB_IDX` is the MIB ID and the `ME_IN` is the ME instance number\n\n## Getting/Setting Speed LAN Mode\n\nTo get the LAN Mode:\n\n```sh\nonu lanpsg 0\n```\nThe `link_status` variable tells the current speed\n\n| Value (for `sgmii_mode` and `link_status`) | Speed                              |\n| ------------------------------------------ | ---------------------------------- |\n| 3                                          | 1 Gbps / SGMII with auto-neg on    |\n| 4                                          | 1 Gbps / SGMII with auto-neg off   |\n| 5                                          | 2.5 Gbps / HSGMII with auto-neg on |\n\nTo change the default lan mode value you can use `fw_setenv sgmii_mode`. The firmware already has the value set to 5 by default and there should not be any need to change it.\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n```sh\nset_serial_number ABCD12345678\n```\nOr:\n```sh\nsfp_i2c -i8 -s \"ABCD12345678\"\n```\n\n## Getting ONU GPON Serial Number\n```sh\nfw_printenv | grep nSerial\n```\nOr:\n```sh\nsfp_i2c -g\n```\n\n## Setting ONU GPON PLOAM password\n```sh\nsfp_i2c -i11 -s \"1234567890\"\n```\n\n## Setting ONU GPON LOID and LOID password\n```sh\nsfp_i2c -i9 -s \"1234567890\"\nsfp_i2c -i10 -s \"password01\"\n```\n\n## Setting OMCI equipment ID (ME 257)\n```sh\nsfp_i2c -i6 -s \"YOUR_EQUIPMENT_ID\"\n```\n\n## Setting OMCI Vendor ID (ME 256)\n```sh\nsfp_i2c -i7 -s \"YOUR_VENDOR_ID\"\n```\n\n## Setting OMCI hardware version (ME 256)\n```sh\nsed 's/256 0 HWTC 0000000000000/256 0 HWTC YOUR_ONU_VERSION/' /rom/etc/mibs/data_1g_8q.ini > /etc/mibs/data_1g_8q.ini\n```\n\n## Restoring the default ONU hardware version (ME 256)\n```sh\ncat /rom/etc/mibs/data_1g_8q.ini > /etc/mibs/data_1g_8q.ini\n```\n\n## Setting OMCI software version (ME 7)\n{% include alert.html content=\"The patch below is only compatible with the firmware version `6BA1896SPLQA42`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nThe image version normally can't be changed because it is hard-coded into the `/opt/lantiq/bin/omcid` binary, \nso the binary has to be modified with the following hex patch which removes the hardcoded version.\n\n```\n< 000084c0: 9a43 931f f760 d840 9b64 f760 d864 1a00  .C...`.@.d.`.d..\n< 000084d0: 1acf 6500 1a20 2268 940a 2205 b468 1a00  ..e.. \"h..\"..h..\n---\n> 000084c0: 9a43 931f f760 d840 9b64 f760 d864 6500  .C...`.@.d.`.de.\n> 000084d0: 6500 6500 1a20 2268 940a 2205 b468 1a00  e.e.. \"h..\"..h..\n\n```\n\n{% include alert.html content=\"Proceed only if your `md5sum /opt/lantiq/bin/omcid` has the correct checksum `7e97163e24c9cb39439589c65b438168`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nThis is the patch, encoded in base64\n```\nQlNESUZGNDA1AAAAAAAAAD4AAAAAAAAA2C8JAAAAAABCWmg5MUFZJlNZYqnvBwAACFBSQWAAAMAA\nAAgAQCAAMQwIIwjImgDOdMvi7kinChIMVT3g4EJaaDkxQVkmU1lrJSbUAACFTAjAACAAAAiCAAAI\nIABQYAFKQ01INxUgd6Soj2JURm8pUR8XckU4UJBrJSbUQlpoORdyRThQkAAAAAA=\n```\nSave it on your computer (not on the stick) as `omcid_patch.base64`, then run:\n```sh\nbase64 -d omcid_patch.base64 > omcid.bspatch\nbspatch <your_original_omcid> omcid omcid.bspatch\n```\n{% include alert.html content=\"If you don't have bspatch installed, most distributions include it in the bsdiff package\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nAfter patching the resulting patched `omcid` should have an md5 checksum of `525139425009c4138e92766645dad7d0`.\nIf that is also correct, continue by making a backup copy of your original `omcid` on the stick.\n\n```sh\ncd /opt/lantiq/bin\ncp omcid omcid.original\n```\n\nNow, SCP has to be used to copy the modified `omcid` binary in `/opt/lantiq/bin/omcid`.\nBefore restarting the stick and applying changes, make sure `omcid` has its execution bit set, then reboot the stick and change the image version with the following command:\n\n```sh\nchmod ugo+x /opt/lantiq/bin/omcid\n```\n\n\nIs also a good time to set the image0/image1_version: crashes have been reported if they are not set correctly before reboot.\n```sh\nfw_setenv image0_version YOUR_IMAGE0_VERSION\nfw_setenv image1_version YOUR_IMAGE1_VERSION\n```\n\nNow the stick can be rebooted.\n{% include alert.html content=\"Be aware that sometimes `omcid` can rewrite the two variables when run in its non-patched state. After reboot, double check the set values are still correct.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Advanced settings\n\n## Setting `data_1g_8q_us1280_ds512.ini` OMCI MIB file for 2500 Mbps profiles\n{% include alert.html content=\"The patch provided below is only compatible with the firmware version `6BA1896SPLQA42`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n{% include alert.html content=\"If you need to set the ONU version remember that you will have to do it using the MIB file `/etc/mibs/data_1g_8q_us1280_ds512.ini` instead of `/etc/mibs/data_1g_8q.ini`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nThe MIB file `data_1g_8q_us1280_ds512.ini` is very useful to avoid performance problems in situations where 2500 Mbps speed profiles are used. To enable it, run this command:\n```sh\nfw_setenv mib_file data_1g_8q_us1280_ds512.ini\n```\n\n## Setting custom OMCI MIB file\n{% include alert.html content=\"If you need to set the ONU version, remember that you will have to do it using your custom MIB file instead of `/etc/mibs/data_1g_8q.ini`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nCopy the MIB file to /etc/mibs, then run this command:\n```sh\nfw_setenv mib_file YOUR_MIB_FILENAME\n```\n\n## Setting management MAC\n```sh\nuci set network.lct.macaddr=00:06:B5:07:D6:04\nuci set network.host.macaddr=00:06:B5:07:D8:04\nuci commit network.lct.macaddr=00:06:B5:07:D6:04\nuci commit network.host.macaddr=00:06:B5:07:D8:04\n```\n\n## Setting management IP\n```sh\nfw_setenv ipaddr 192.168.20.60\nfw_setenv gatewayip 192.168.20.1\n```\n\n## Rebooting the ONU\n```sh\nreboot\n```\n\n## Disable RX_LOS status\n{% include alert.html content=\"The patch provided below is only compatible with the firmware version `6BA1896SPLQA42`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nSome switches/routers (e.g. Mikrotik) do not allow access to the magament interface without the fiber being connected because the SFP reports RX_LOS status It is possible to fix this by modifying the `mod_optic.ko` driver to spoof non RX_LOS status by setting PIN 8 (RX_LOS) to be always low.\n\nThis is the change to be made, in hex format:\n\n```\n< 00013740: 2404 0003 2405 0001 0c00 0000 ac43 0980  $...$........C..\n---\n> 00013740: 2404 0003 2405 0000 0c00 0000 ac43 0980  $...$........C..\n```\n\n{% include alert.html content=\"Proceed only if your `md5sum /lib/modules/3.10.49/mod_optic.ko` has the correct checksum `7c718c3410c4120fe98fa7a9a5c6c407`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nThis is the patch, encoded in base64:\n```\nQlNESUZGNDA2AAAAAAAAADYAAAAAAAAAXEEFAAAAAABCWmg5MUFZJlNZ5TTrjgAAB+ZARjAEACAA\nAARAACAAMQZMQRppiFkgKGTeXi7kinChIcpp1xxCWmg5MUFZJlNZcaVLvQABOOCAwAAAAQAIAAig\nACClRgZoMhUf9JKbgIk3hdyRThQkHGlS70BCWmg5F3JFOFCQAAAAAA==\n```\n\nSave it on your computer (not on the stick) as `mod_optic.base64`, then run:\n```sh\nbase64 -d mod_optic.base64 > mod_optic.bspatch\nbspatch <your_original_mod_optic.ko> mod_optic.ko mod_optic.bspatch\n```\n{% include alert.html content=\"If you don't have bspatch installed, most distributions include it in the bsdiff package\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nAfter patching the resulting `mod_optic.ko` should have an md5 checksum of `e14a5a70b023873853afe920870f076e`.\nIf that is also correct, continue by making a backup copy of your original `mod_optic.ko` on the stick.\n\n```sh\ncd /lib/modules/3.10.49/\ncp mod_optic.ko mod_optic.ko.original\n```\n\nNow use SCP to copy the modified `mod_optic.ko` kernel module in `/lib/modules/3.10.49/mod_optic.ko`.\n\n## TX Fault / Serial\n\nThe stick will remain in a perpetual \"TX Fault\" state as the same SFP pin is used for both serial and TX Fault signaling. If this causes you issues (normally it shouldn't), you can issue the commands below to disable it. Note that this will disable both the TX Fault signal and Serial on the stick after boot.\n\n```sh\nfw_setenv asc0 1\nfw_setenv preboot \"gpio set 3;gpio input 100;gpio input 105;gpio input 106;gpio input 107;gpio input 108\"\n```\n\nIn case you need to re-enable it, issue the following commands from the bootloader (FALCON)\n\n```sh\nFALCON => setenv asc0 0\nFALCON => saveenv\n```\n# SFP EEPROM settings\n\n## Reading all EEPROM\n```sh\nsfp_i2c -r\n```\n\n## Getting Firmware version\n```sh\nstrings /opt/lantiq/bin/omcid | grep ^software_Version | awk -F[=,] '{print $2}'\n```\n\n## Getting Firmware build time\n```sh\nstrings /opt/lantiq/bin/omcid | grep compiled\n```\n\n# EEPROM (I2C slave simulated EEPROM)\nThe FS GPON-ONU-34-20BI stick does not have a physical EEPROM, the Falcon SOC emulates an EEPROM by exposing it on the I2C interface as required by the SFF-8472 specification.\n\nOn the I2C interface, two memories of 256 bytes each will be available at the addresses `1010000X (A0h)` and `1010001X (A2h)`, however the actual available memory from the emulated EEPROM will be 640 bytes each, but only the first 256 bytes will be exposed in the I2C interface.\n\nThe FS stick stores the content of the emulated EEPROM in U-Boot env variables to restore it after a reboot:\n\n- `EEPROM0 (A0h)` stored in U-Boot env variable `sfp_a0_low_128`\n- `EEPROM1 (A2h)` stored in U-Boot env variable `sfp_a2_info`\n\n## EEPROM0 layout\n\n| address | size | name                              | default value                                                                                           | description                                                         |\n| ------- | ---- | --------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |\n|         |      | **BASE ID FIELDS (SFF-8472)**     |                                                                                                         |                                                                     |\n| 0       | 1    | Identifier                        | `0x03` (SFP)                                                                                            | Type of transceiver                                                 |\n| 1       | 1    | Ext identifier                    | `0x04` (MOD_DEF 4)                                                                                      | Additional information about the transceiver                        |\n| 2       | 1    | Connector                         | `0x01` (SC)                                                                                             | Type of media connector                                             |\n| 3-10    | 8    | Transceiver                       | `0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00`                                                               | Code for optical compatibility                                      |\n| 11      | 1    | Encoding                          | `0x03` (NRZ)                                                                                            | High speed serial encoding algorithm                                |\n| 12      | 1    | Signaling Rate, Nominal           | `0x0C` (1.244Gbps)                                                                                      | Nominal signaling rate                                              |\n| 13      | 1    | Rate Identifier                   | `0x00` (Not used)                                                                                       | Type of rate select functionality                                   |\n| 14      | 1    | Length (SMF,km)                   | `0x14` (20 km)                                                                                          | Link length supported for single-mode fiber, units of km            |\n| 15      | 1    | Length (SMF)                      | `0xC8` (200 x 100m)                                                                                     | Link length supported for single-mode fiber, units of 100 m         |\n| 16      | 1    | Length (50 um, OM2)               | `0x00` (No support)                                                                                     | Link length supported for 50 um OM2 fiber, units of 10 m            |\n| 17      | 1    | Length (62.5 um, OM1)             | `0x00` (No support)                                                                                     | Link length supported for 62.5 um OM1 fiber, units of 10 m          |\n| 18      | 1    | Length copper cable               | `0x00` (No support)                                                                                     | Link length supported for copper or direct attach cable, units of m |\n| 19      | 1    | Length (50 um, OM3)               | `0x00` (No support)                                                                                     | Link length supported for 50 um OM3 fiber, units of 10 m            |\n| 20-35   | 16   | Vendor name                       | `0x46 0x53 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20` (FS)                  | SFP vendor name (ASCII)                                             |\n| 36      | 1    | Transceiver                       | `0x00` (No support)                                                                                     | Code for optical compatibility                                      |\n| 37-39   | 3    | Vendor OUI                        | `0x00 0x00 0x00` (No specified)                                                                         | SFP vendor IEEE company ID                                          |\n| 40-55   | 16   | Vendor PN                         | `0x47 0x50 0x4F 0x4E 0x2D 0x4F 0x4E 0x55 0x2D 0x33 0x34 0x2D 0x32 0x30 0x42 0x49` (GPON-ONU-34-20BI)    | Part number provided by SFP vendor (ASCII)                          |\n| 56-59   | 4    | Vendor rev                        | `0x30 0x31 0x20 0x20` (01)                                                                              | Revision level for part number provided by vendor (ASCII)           |\n| 60-61   | 2    | Wavelength                        | `0x05 0x1E` (1310nm TX)                                                                                 | Laser wavelength                                                    |\n| 62      | 1    | Fibre Channel Speed 2             | `0x00` (No support)                                                                                     | Transceiver's Fibre Channel speed capabilities                      |\n| 63      | 1    | CC_BASE                           |                                                                                                         | Check code for Base ID Fields (addresses 0 to 62)                   |\n|         |      | **EXTENDED ID FIELDS (SFF-8472)** |                                                                                                         |                                                                     |\n| 64-65   | 2    | Options                           | `0x00 0x1A` (TX DISABLE, TX FAULT, RX LOS)                                                              | Indicates which optional transceiver signals are implemented        |\n| 66      | 1    | Signaling Rate, max               | `0x00` (No specified)                                                                                   | Upper signaling rate margin, units of %                             |\n| 67      | 1    | Signaling Rate, min               | `0x00` (No specified)                                                                                   | Lower signaling rate margin, units of %                             |\n| 68-83   | 16   | Vendor SN                         | Unique in each SFP                                                                                      | Serial number provided by vendor (ASCII)                            |\n| 84-91   | 8    | Date code                         | Unique in each SFP                                                                                      | Vendor's manufacturing date code                                    |\n| 92      | 1    | Diagnostic Monitoring Type        | `0x68` (Digital diagnostic, Internally calibrated, Received average power type)                         | Indicates which type of diagnostic monitoring is implemented        |\n| 93      | 1    | Enhanced Options                  | `0xF0` (Alarm/warning flags, soft TX_DISABLE control, soft TX_FAULT monitoring, soft RX_LOS monitoring) | Indicates which optional enhanced features are implemented          |\n| 94      | 1    | SFF-8472 Compliance               | `0x05` (Rev 11.0 of SFF-8472)                                                                           | Indicates which revision of SFF-8472 the transceiver complies with  |\n| 95      | 1    | CC_EXT                            |                                                                                                         | Check code for the Extended ID Fields (addresses 64 to 94)          |\n|         |      | **VENDOR SPECIFIC FIELDS**        |                                                                                                         |                                                                     |\n| 96-127  | 32   | Vendor data                       | `0x20 0x20 0x20...` (Not used)                                                                          | Vendor specifc data (ASCII)                                         |\n| 128-255 | 128  | Reserved                          | `0x00 0x00 0x00...`                                                                                     | Reserved                                                            |\n|         |      | **EXTRA EEPROM FIELDS**           |                                                                                                         | **Not exposed to I2C interface**                                    |\n| 256-639 | 384  | Reserved                          | `0x00 0x00 0x00...`                                                                                     | Reserved                                                            |\n\n\n## EEPROM1 layout\n\n| address | size | name                              | default value                                                                               | description                                                       |\n| ------- | ---- | --------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |\n|         |      | **DIAGNOSTIC AND CONTROL FIELDS** |                                                                                             |                                                                   |\n| 0-1     | 2    | Temp High Alarm                   | `0x5F 0x00` (95℃)                                                                           | Value expressed in two's complement                               |\n| 2-3     | 2    | Temp Low Alarm                    | `0xCE 0x00` (-50℃)                                                                          | Value expressed in two's complement                               |\n| 4-5     | 2    | Temp High Warning                 | `0x5A 0x00` (90℃)                                                                           | Value expressed in two's complement                               |\n| 6-7     | 2    | Temp Low Warning                  | `0xD3 0x00` (-45℃)                                                                          | Value expressed in two's complement                               |\n| 8-9     | 2    | Voltage High Alarm                | `0x8C 0xA0` (3.6V)                                                                          | Value expressed in volt subunits[^subunit]                        |\n| 10-11   | 2    | Voltage Low Alarm                 | `0x75 0x30` (3.0V)                                                                          | Value expressed in volt subunits[^subunit]                        |\n| 12-13   | 2    | Voltage High Warning              | `0x88 0xB8` (3.5V)                                                                          | Value expressed in volt subunits[^subunit]                        |\n| 14-15   | 2    | Voltage Low Warning               | `0x79 0x18` (3.1V)                                                                          | Value expressed in milliampere subunits[^subunit]                 |\n| 16-17   | 2    | Bias High Alarm                   | `0xAF 0xC8` (90mA)                                                                          | Value expressed in milliampere subunits[^subunit]                 |\n| 18-19   | 2    | Bias Low Alarm                    | `0x00 0x00` (0mA)                                                                           | Value expressed in milliampere subunits[^subunit]                 |\n| 20-21   | 2    | Bias High Warning                 | `0x88 0xB8` (70mA)                                                                          | Value expressed in milliampere subunits[^subunit]                 |\n| 22-23   | 2    | Bias Low Warning                  | `0x00 0x00` (0mA)                                                                           | Value expressed in milliampere subunits[^subunit]                 |\n| 24-25   | 2    | TX Power High Alarm               | `0xF6 0x77` (8dBm)                                                                          | Value expressed in watts subunits[^subunit]                       |\n| 26-27   | 2    | TX Power Low Alarm                | `0x15 0xF7` (-2.5dBm)                                                                       | Value expressed in watts subunits[^subunit]                       |\n| 28-29   | 2    | TX Power High Warning             | `0xC3 0xC6` (7dBm)                                                                          | Value expressed in watts subunits[^subunit]                       |\n| 30-31   | 2    | TX Power Low Warning              | `0x1B 0xA7` (-1.5dBm)                                                                       | Value expressed in watts subunits[^subunit]                       |\n| 32-33   | 2    | RX Power High Alarm               | `0x0C 0x5A` (-5dBm)                                                                         | Value expressed in watts subunits[^subunit]                       |\n| 34-35   | 2    | RX Power Low Alarm                | `0x00 0x08` (-31dBm)                                                                        | Value expressed in watts subunits[^subunit]                       |\n| 36-37   | 2    | RX Power High Warning             | `0x09 0xCF` (-6dBm)                                                                         | Value expressed in watts subunits[^subunit]                       |\n| 38-39   | 2    | RX Power Low Warning              | `0x00 0x0A` (-30dBm)                                                                        | Value expressed in watts subunits[^subunit]                       |\n| 40-45   | 6    | MAC address                       | Unique in each SFP                                                                          | Contains the mac address of the SFP, it could also be empty       |\n| 46-55   | 10   | Reserved                          | `0x00 0x00 0x00...`                                                                         | Reserved                                                          |\n| 56-59   | 4    | RX_PWR(4) Calibration             | `0x00 0x00 0x00 0x00`                                                                       | 4th order RSSI calibration coefficient                            |\n| 60-63   | 4    | RX_PWR(3) Calibration             | `0x00 0x00 0x00 0x00`                                                                       | 3rd order RSSI calibration coefficient                            |\n| 64-67   | 4    | RX_PWR(2) Calibration             | `0x00 0x00 0x00 0x00`                                                                       | 2nd order RSSI calibration coefficient                            |\n| 68-71   | 4    | RX_PWR(1) Calibration             | `0x3F 0x80 0x00 0x00`                                                                       | 1st order RSSI calibration coefficient                            |\n| 72-75   | 4    | RX_PWR(0) Calibration             | `0x00 0x00 0x00 0x00`                                                                       | 0th order RSSI calibration coefficient                            |\n| 76-77   | 2    | TX_I(Slope) Calibration           | `0x01 0x00`                                                                                 | Slope for Bias calibration                                        |\n| 78-79   | 2    | TX_I(Offset) Calibration          | `0x00 0x00`                                                                                 | Offset for Bias calibration                                       |\n| 80-81   | 2    | TX_PWR(Slope) Calibration         | `0x01 0x00`                                                                                 | Slope for TX Power calibration                                    |\n| 82-83   | 2    | TX_PWR(Offset) Calibration        | `0x00 0x00`                                                                                 | Offset for TX Power calibration                                   |\n| 84-85   | 2    | T(Slope) Calibration              | `0x01 0x00`                                                                                 | Slope for Temperature calibration                                 |\n| 86-87   | 2    | T(Offset) Calibration             | `0x00 0x00`                                                                                 | Offset for Temperature calibration, in units of 256ths °C         |\n| 88-89   | 2    | V(Slope) Calibration              | `0x01 0x00`                                                                                 | Slope for VCC calibration                                         |\n| 90-91   | 2    | V(Offset) Calibration             | `0x00 0x00`                                                                                 | Offset for VCC calibration                                        |\n| 92-94   | 3    | Reserved                          | `0x00 0x00 0x00`                                                                            | Reserved                                                          |\n| 95      | 1    | CC_DMI                            |                                                                                             | Check code for Base Diagnostic Fields (addresses 0 to 94)         |\n| 96      | 1    | Temperature MSB                   |                                                                                             | Internally measured module temperature                            |\n| 97      | 1    | Temperature LSB                   |                                                                                             |                                                                   |\n| 98      | 1    | Vcc MSB                           |                                                                                             | Internally measured supply voltage in transceiver                 |\n| 99      | 1    | Vcc LSB                           |                                                                                             |                                                                   |\n| 100     | 1    | TX Bias MSB                       |                                                                                             | Internally measured TX Bias Current                               |\n| 101     | 1    | TX Bias LSB                       |                                                                                             |                                                                   |\n| 102     | 1    | TX Power MSB                      |                                                                                             | Measured TX output power                                          |\n| 103     | 1    | TX Power LSB                      |                                                                                             |                                                                   |\n| 104     | 1    | RX Power MSB                      |                                                                                             | Measured RX input power                                           |\n| 105     | 1    | RX Power LSB                      |                                                                                             |                                                                   |\n| 106-109 | 4    | Optional Diagnostics              | `0xFF 0xFF 0xFF 0xFF` (No support)                                                          | Monitor Data for Optional Laser temperature and TEC current       |\n| 110     | 1    | Status/Control                    | `0x82` (Soft TX disable, disable laser, digital TX fault, digital RX LOS, power&data ready) | Optional Status and Control Bits                                  |\n| 111     | 1    | Reserved                          | `0x00`                                                                                      | Reserved                                                          |\n| 112-113 | 2    | Alarm Flags                       | Supported                                                                                   | Diagnostic Alarm Flag Status Bits                                 |\n| 114     | 1    | Tx Input EQ control               | `0xFF` (No support)                                                                         | Tx Input equalization level control                               |\n| 115     | 1    | Rx Out Emphasis control           | `0xFF` (No support)                                                                         | Rx Output emphasis level control                                  |\n| 116-117 | 2    | Warning Flags                     | Supported                                                                                   | Diagnostic Warning Flag Status Bits                               |\n| 118-119 | 2    | Ext Status/Control                | `0x00 0x00` (No support)                                                                    | Extended module control and status bytes                          |\n|         |      | **GENERAL USE FIELDS**            |                                                                                             |                                                                   |\n| 120-126 | 7    | Vendor Specific                   | `0x70 0x00 0x00 0x00 0x00 0x00 0x00`                                                        | Vendor specific memory addresses                                  |\n| 127     | 1    | Table Select                      | `0x00`                                                                                      | Optional Page Select                                              |\n|         |      | **USER WRITABLE EEPROM**          |                                                                                             |                                                                   |\n| 128-190 | 63   | Reserved                          | `0xFF 0xFF 0xFF...`                                                                         | Reserved                                                          |\n| 191-214 | 24   | GPON LOID or PLOAM                | Depends on the configuration of the SFP                                                     | GPON Logical ONU ID or PLOAM, depends on `GPON LOID/PLOAM switch` |\n| 215-231 | 17   | GPON LPWD                         | Depends on the configuration of the SFP                                                     | GPON Logical Password                                             |\n| 232     | 1    | GPON LOID/PLOAM switch            | Depends on the configuration of the SFP                                                     | `0x01` to enable LOID, `0x02` to enable PLOAM                     |\n| 233-240 | 8    | GPON SN                           | Unique in each SFP                                                                          | GPON Serial Number (ME 256)                                       |\n| 241-247 | 7    | Reserved                          | `0xFF 0xFF 0xFF...`                                                                         | Reserved                                                          |\n| 248-255 | 8    | Vendor Control                    | `0xFF 0xFF 0xFF...` (Not used)                                                              | Vendor specific control functions                                 |\n|         |      | **EXTRA EEPROM FIELDS**           |                                                                                             | **Not exposed to I2C interface**                                  |\n| 256-511 | 256  | Unknown vendor specific           |                                                                                             | Probably not used in current SFPs                                 |\n| 512-531 | 20   | GPON Equipment ID                 |                                                                                             | GPON Equipment ID (ME 257), may not work in some firmwares        |\n| 532-535 | 4    | GPON Vendor ID                    |                                                                                             | GPON Vendor ID (ME 256 and more), may not work in some firmware   |\n| 536-639 | 104  | Reserved                          |                                                                                             | Reserved                                                          |\n\n{% include alert.html content=\"For more information, see the SFF-8472 Rev 11.0 specification.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Miscellaneous Links\n\n- [FS.com](https://www.fs.com/it/products/133619.html)\n- [General setting of lantiq](https://forum.fibra.click/d/23881-ma5671a-e-vodafone-25-gbps/64)\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n- [SourcePhotonics SPS-34-24T-HP-TDFO Datasheet](https://www.sourcephotonics.com/wp-content/uploads/2017/08/DS-8085-02_SPS-34-24T-HP-TDFO.pdf)\n- [FS.com GPON-ONU-34-20BI Configuration Guide](https://resource.fs.com/mall/doc/20230831180515egrzs6.pdf)\n\n---\n\n[^subunit]: The subunit are 10000 times smaller than the specified unit\n"
  },
  {
    "path": "_ont/ont-fs-com-mod.md",
    "content": "---\ntitle: FS.com Modded Firmware for Huawei MA5671A and FS.com GPON-ONU-34-20BI\nhas_children: false\nredirect_to: /ont-huawei-ma5671a-fs-mod\nlayout: default\nparent: FS.com GPON ONU Stick with MAC (GPON-ONU-34-20BI)\n---\n"
  },
  {
    "path": "_ont/ont-fs-com-onu1710-1g.md",
    "content": "---\ntitle: FS.com ONU1710-1G\nhas_children: false\nlayout: default\nparent: FS.com\n---\n\n# Hardware Specifications\n\n|              |                                              |\n| ------------ | -------------------------------------------- |\n| Vendor/Brand | FS.com                                       |\n| Model        | ONU1710-1G                                   |\n| P/N          | ONU1710-1G                                   |\n| SKU          | 154796                                       |\n| Chipset      | Realtek RTL9601D                             |\n| CPU          | MIPS-I 32-bit (big-endian)                   |\n| CPU Clock    | 300 MHz                                      |\n| RAM          | 32 MB (DDR2, 325 MHz)                        |\n| Flash        | 4 MB (SPI NOR, ZBIT JEDEC 5E4016)            |\n| Bootloader   | U-Boot 2011.12.NA (Realtek-modified)         |\n| System       | Linux 2.6.30.9 (Luna SDK / RSDK-1.5.6p2)     |\n| XPON Mode    | GPON + EPON dual-mode adaptive               |\n| Optics       | 1x PON (SC/UPC)                              |\n| Power        | 12V DC, 5.5mm barrel jack (center positive)  |\n| Ethernet     | 1x GE (1000BASE-T, RJ45)                     |\n| IP address   | 192.168.123.1                                |\n| Web Gui      | port 80, user `admin`, password `super&123`  |\n| SSH          | no                                           |\n| Telnet       | port 23, user `admin`, password `super&123`  |\n| Serial       | 115200 8-N-1 3.3V                            |\n| Form Factor  | Desktop ONT                                  |\n\n\n## Specifications\n\nThe ONU1710-1G is an XPON (GPON + EPON) dual-mode adaptive ONT with 1x GE Ethernet port. It supports 1.25 Gbps upstream and 2.5 Gbps downstream (GPON mode), complies with ITU-T G.984/G.987/G.988/G.989 standards, and supports network deployment up to 20 km.\n\n*Adapted from vendor's marketing material.*\n\n## List of software versions\n- 10.0.52B.2095 (2025-03-20)\n\n## Default credentials\n\nOnly the `user` account is publicly documented by FS.com. The `admin` account was discovered through firmware analysis.\n\n| Username | Password      | Access     | Notes                                                  |\n| -------- | ------------- | ---------- | ------------------------------------------------------ |\n| `user`   | `123456`      | Web/Telnet | Limited user account (publicly documented)             |\n| `admin`  | `super&123`   | Web/Telnet | Super user / administrator                             |\n\n## Hardware\n\n{% include image.html file=\"fs-com-onu1710-1g/pcb.jpg\" alt=\"FS.com ONU1710-1G PCB\" caption=\"FS.com ONU1710-1G PCB\" %}\n\nKey components:\n- SoC: Realtek RTL9601D (MIPS-I 32-bit, 88-pin)\n- RAM: 32 MB DDR2\n- Flash: 4 MB SPI NOR (ZBIT JEDEC 5E4016)\n- Optical transceiver: Semtech GN25L95 BOSA, SC/UPC connector\n- Serial port: 4-pin 2.54mm header (unpopulated) 3.3V 115200 8-N-1\n\n## U-Boot environment\n\n{% include serial_dump.html title=\"Full <code>printenv</code> output\" file=\"fs-com-onu1710-1g/uboot-env.txt\" %}\n\nKey variables:\n\n| Variable       | Value (default) | Description                                                        |\n| -------------- | --------------- | ------------------------------------------------------------------ |\n| `sw_active`    | `1`             | Currently active image slot (0 or 1; both point to same flash)     |\n| `sw_commit`    | `1`             | Last committed image slot                                          |\n| `sw_tryactive` | `2`             | Boot control: `2` = boot by `sw_commit`; `0`/`1` = first-boot try |\n| `sw_valid0/1`  | `1`             | Image slot validity flag                                           |\n| `sw_version0/1`| `10.0.52B.2095` | Firmware version string for each slot                              |\n| `ethaddr`      | `00:E0:4C:86:70:01` | Factory MAC address                                            |\n| `bootdelay`    | `2`             | U-Boot countdown in seconds before autoboot                        |\n| `serverip`     | `192.168.123.100` | TFTP server address for firmware upload                          |\n\nFrom the running Linux shell, U-Boot environment variables can be read and written using `/bin/nv getenv <variable>` and `/bin/nv setenv <variable> <value>`.\n\n## List of partitions\n\nThe flash uses a single-image layout — both image slots (`k0`/`k1`, `r0`/`r1`) point to the same physical offsets.\n\n| dev  | offset     | size     | erasesize | name     | type                           |\n| ---- | ---------- | -------- | --------- | -------- | ------------------------------ |\n| mtd0 | 0x000000   | 0x02A000 | 0x001000  | \"boot\"   | Preloader + U-Boot (LZMA)      |\n| mtd1 | 0x02A000   | 0x002000 | 0x001000  | \"env\"    | U-Boot environment (primary)   |\n| mtd2 | 0x02C000   | 0x002000 | 0x001000  | \"env2\"   | U-Boot environment (backup)    |\n| mtd3 | 0x02E000   | 0x012000 | 0x001000  | \"config\" | JFFS2 configuration filesystem |\n| mtd4 | 0x040000   | 0x139000 | 0x001000  | \"k0\"     | Kernel uImage (LZMA)           |\n| mtd5 | 0x179000   | 0x287000 | 0x001000  | \"r0\"     | Root filesystem (SquashFS+LZMA)|\n| mtd6 | 0x040000   | 0x139000 | 0x001000  | \"k1\"     | Kernel uImage (same as k0)     |\n| mtd7 | 0x179000   | 0x287000 | 0x001000  | \"r1\"     | Root filesystem (same as r0)   |\n\nTo dump the full flash contents over serial from the U-Boot prompt, read it in 1 MB chunks using `sf read` and dump each chunk as hex with `md.b`:\n\n```\nsf probe\nsf read 0x80000000 0x000000 0x100000\nmd.b 0x80000000 0x100000\nsf read 0x80000000 0x100000 0x100000\nmd.b 0x80000000 0x100000\nsf read 0x80000000 0x200000 0x100000\nmd.b 0x80000000 0x100000\nsf read 0x80000000 0x300000 0x100000\nmd.b 0x80000000 0x100000\n```\n\nCapture the serial output with a terminal emulator, then convert the hex dump to binary.\n\n## Bootup\n\n{% include serial_dump.html title=\"Full boot log captured on serial port\" file=\"fs-com-onu1710-1g/bootlog.txt\" %}\n\n\n1. **Preloader** (Bismarck 3.5) initializes DDR2 DRAM, decompresses and launches U-Boot\n2. **U-Boot** (2s delay, 115200 baud) checks `sw_tryactive`: if it equals `2`, boots by `sw_commit`; otherwise it is a first-boot attempt that sets `sw_tryactive=2`, saves env, and boots the selected image\n3. **Kernel** boots with `console=ttyS0,115200`, mounts SquashFS root\n4. **`/etc/init.d/rcS`** runs init scripts `rc0`–`rc63` sequentially:\n   - `rc2`: Mounts `/proc`, ramfs, sysfs, tmpfs `/dev`; mounts JFFS2 config to `/var/config`; brings up `lo` and `nas0`\n   - `rc3`: Runs `configd`, loads XML config (`config_xmlconfig.sh -b`), inserts kernel modules (`insdrv.sh`), runs SDK init (`runsdk.sh`), starts OMCI (`checkomci`)\n   - `rc10`: Tunes kernel network parameters (conntrack timeouts, IP forwarding)\n   - `rc14`: Configures IPv6 sysctl settings\n   - `rc32`: Launches `startup` daemon and BOSA optical calibration (`rtkbosa.sh`)\n   - `rc34`: Enables hardware watchdog\n   - `rc35`: Enables PHY ports\n\n## Filesystem\n\nThe root filesystem is a SquashFS image (LZMA-compressed) with 525 files and stripped binaries. Runtime state is kept on a tmpfs (`/var`) and the JFFS2 config partition (mounted at `/var/config`).\n\n```\nsquashfs-root/\n  bin/         -- BusyBox 1.12.4 + OMCI tools (omcicli, omci_app, checkomci), boa, iptables,\n               -- diag, ethctl, flash (aliased as nv), configd, xmlconfig, pondetect, igmpd, ...\n  etc/\n    init.d/    -- rcS, rc2, rc3, rc10, rc14, rc32, rc34, rc35\n    scripts/   -- mnt_cfgfs.sh, insdrv.sh, runsdk.sh, rtkbosa.sh, factory reset helpers\n  home/httpd/\n    boa.conf   -- Boa v0.94 web server configuration (User 0, Group 0)\n    web/       -- 243 ASP pages (WAN, LAN, OMCI info, VLAN, QoS, firewall, TR-069, diagnostics, ...)\n  lib/\n    librtk.so        -- Realtek SDK (~964 KB, largest userspace library)\n    libmib.so        -- MIB management\n    libomci_*.so     -- OMCI stack (API, FAL, GOS, MIB, voice)\n    libmultilang_*.so -- i18n strings (Chinese + English)\n    modules/         -- Kernel modules (omcidrv.ko, pf_rtk.ko, epon_drv.ko, igmp_drv.ko,\n                     --   europa_drv.ko, rldp_drv.ko, dpbcaster.ko, ...)\n    omci/            -- 127 OMCI MIB handler plugins (.so), one per managed entity type\n    voip/            -- SIP/VoIP libraries\n  etc/scripts/flash  -- Shell script for reading/writing MIB variables via xmlconfig\n```\n\nThe config partition (`/var/config`) holds `lastgood.xml` (XML runtime config, persisted across reboots) and OMCI MIB state (`omci_mib.cfg`).\n\nNote: the `flash` MIB tool (`/etc/scripts/flash`) and the `nv` U-Boot env tool (`/bin/nv`) are separate commands for different purposes.\n\n\n# GPON/OMCI settings\n\n## Via web UI\n\nThe ONU1710-1G exposes several hidden web UI pages for GPON/OMCI configuration that are not linked in the main navigation. Log in as `admin` and access them by URL.\n\n### Version modification (vermod.asp)\n\nAccessible at `http://192.168.123.1/vermod.asp`, this page allows changing:\n- Manufacturer, OUI, Product Class\n- Serial Number, Provisioning Code\n- Spec Version, Software Version, Hardware Version\n- GPON Serial Number\n- ELAN MAC Address\n- **Export**: Download the current OMCI event log\n- **Import**: Upload a shell script that is executed as root (see Security section)\n\n{% include image.html file=\"fs-com-onu1710-1g/vermod.png\" alt=\"FS.com ONU1710-1G vermod.asp\" caption=\"Version modification page (vermod.asp)\" %}\n\n### GPON configuration (gpon.asp)\n\nAccessible at `http://192.168.123.1/gpon.asp`, this page allows changing:\n- PLOAM Password (max 10 characters)\n- LOID (max 24 characters)\n- LOID Password (max 12 characters)\n\n### OMCI information (omci_info.asp)\n\nAccessible at `http://192.168.123.1/omci_info.asp`, this page allows viewing/changing:\n- OMCI Software Version 1/2\n- CWMP Product Class\n- CWMP Hardware Version\n- OMCI Vendor ID\n\n### WAN configuration (waneth.asp)\n\nAccessible at `http://192.168.123.1/waneth.asp`, this page supports the following connection types:\n- **Bridge**: Transparent L2 bridge (no NAT, no routing)\n- **PPPoE**: PPP over Ethernet (typical ISP authentication)\n- **IPoE**: IP over Ethernet (DHCP or static IP)\n\nThe page also allows configuring NAPT (NAT), IGMP snooping, QoS, default route, and IPv6.\n\n## Via Telnet\n\nConfiguration can be done via telnet using the `flash` command (`/etc/scripts/flash`). The user and admin passwords can also be changed through the web UI.\n\n```sh\n# LOID and PLOAM password\nflash get LOID\nflash set LOID YOURLOID\nflash get LOID_PASSWD\nflash set LOID_PASSWD YOURLOIDPASSWORD\nflash get GPON_ONU_PASSWD\nflash set GPON_ONU_PASSWD 1234567890\n\n# GPON serial number / vendor ID\nflash get GPON_SN\nflash set GPON_SN ABCD12345678\nflash get PON_VENDOR_ID\nflash set PON_VENDOR_ID ABCD\n\n# Hardware / software version strings (reported via OMCI)\nflash get HW_HWVER\nflash set HW_HWVER 1.0\nflash get HW_CWMP_PRODUCTCLASS\nflash set HW_CWMP_PRODUCTCLASS MyProduct\n\n# OMCI software version\nflash get OMCI_SW_VER1\nflash set OMCI_SW_VER1 V1.9.0\nflash get OMCI_SW_VER2\nflash set OMCI_SW_VER2 V1.9.0\n\n# PON mode (1=GPON, 2=EPON, 3=Ethernet)\nflash get PON_MODE\nflash set PON_MODE 1\n\n# Bridge mode\nflash get DIRECT_BRIDGE_MODE\nflash set DIRECT_BRIDGE_MODE 1\n\n# User and admin passwords\nflash get USER_PASSWORD\nflash set USER_PASSWORD newpassword\nflash get SUSER_PASSWORD\nflash set SUSER_PASSWORD newpassword\n```\n\n\n# Security considerations\n\n{% include alert.html content=\"This device has extremely poor security practices and should not be used in any environment where it may be reachable by untrusted parties.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n- **Undocumented default credentials**: The `admin` account (`super&123`) is not mentioned in any FS.com documentation but has full administrative access. The firmware also contains references to additional accounts (`adsl`/`xponadmin`, `xponadmin`/`xponre@1t3k`) in inactive backup config files and hardcoded code paths. These were not usable but are likely leftovers from the Realtek SDK.\n- **Unencrypted management protocols**: Both the web interface (HTTP port 80) and Telnet (port 23) transmit credentials and configuration in cleartext. Both are enabled by default.\n- **Arbitrary script upload and execution**: The `vermod.asp` page has an \"Import\" form that posts to `/boaform/formImportOMCIShell`. The handler writes the uploaded file to `/tmp/omcishell` and executes it immediately via `system(\"/bin/sh /tmp/omcishell\")`. Likely an intentional debug feature that allows the `admin` user to execute commands as root without going through telnet.\n- **Privilege escalation via auth realm mismatch**: The Boa web server maps `/` to admin credentials and `/boaform/admin` to user credentials. Admin-only handlers like `formImportOMCIShell` can be reached by the low-privilege `user` account by requesting `/boaform/admin/formImportOMCIShell` instead. This gives the unprivileged account full root access.\n- **All services run as root**: The web server (Boa), telnet daemon, and OMCI stack all run with root privileges (UID 0).\n- **Management services bind on all interfaces**: Boa (port 80) and telnet (port 23) bind to `::` with no iptables rules. When connected to GPON, depending on the ISP's network configuration, these services may be reachable beyond the LAN; though this has not been practically verified.\n\n# Miscellaneous Links\n\n- [FS.com ONU1710-1G Product Page](https://www.fs.com/eu-en/products/154796.html)\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n"
  },
  {
    "path": "_ont/ont-fs-com.md",
    "content": "---\ntitle: FS.com \nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont/ont-genexis-ft-g2110c-2.5g.md",
    "content": "---\ntitle: FiberTwist G2110C-2.5G\nhas_children: false\nlayout: default\nparent: Genexis\n---\n\n# Hardware Specifications\n\n|                 |                                                              |\n| --------------- | ------------------------------------------------------------ |\n| Vendor/Brand    | Genexis FiberTwist                                           |\n| Model           | G2110C-2.5G                                                  |\n| Chipset         | Realtek RTL9601D                                             |\n| Flash           | 128MB                                                        |\n| RAM             | 32MB                                                         |\n| System          | Linux 3.18 (Luna SDK 3.3)                                    |\n| LAN             | 2.5GBaseT                                                    |\n| Optics          | SC/APC                                                       |\n| IP address      | 192.168.100.1/24 or 192.168.1.1/24                           |\n| Web Gui         | Can be enabled, locked down by iptables rule and missing CSS |\n| SSH             |                                                              |\n| Telnet          | ✅ user `company`, password `amyM77yY`                        |\n| Serial          | ✅                                                            |\n| Serial baud     | 115200                                                       |\n| Serial encoding | 8-N-1                                                        |\n| Form Factor     | ONT                                                          |\n\n{% include image.html file=\"ft-g2110c-2.5g-front.jpg\"  alt=\"FiberTwist G2110C-2.5G Front\" caption=\"FiberTwist G2110C-2.5G Front\" %}\n\n{% include image.html file=\"ft-g2110c-2.5g-back.jpg\"  alt=\"FiberTwist G2110C-2.5G Back\" caption=\"FiberTwist G2110C-2.5G Back\" %}\n\n## Optical Header installation backplate\n{% include image.html file=\"ft-g2110c-2.5g-optical-header-1.jpg\"  alt=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" caption=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" %}\n\n{% include image.html file=\"ft-g2110c-2.5g-optical-header-2.jpg\"  alt=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" caption=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" %}\n\n{% include image.html file=\"ft-g2110c-2.5g-optical-header-3.jpg\"  alt=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" caption=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" %}\n\n## Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the ONT's shield:\n\n{% include image.html file=\"ft-g2110c-2.5g-internal.jpg\"  alt=\"FiberTwist G2110C-2.5G Internal\" caption=\"FiberTwist G2110C-2.5G Internal\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try swapping them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of software versions\n- C-5.6.1-R\n- C-5.7.0-R\n- C-5.7.1-DEV3\n- C-5.7.1-EFT1\n\n## List of partitions\n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"boot\"          |\n| mtd1  | 00002000 | 00001000  | \"env\"           |\n| mtd2  | 00002000 | 00001000  | \"env2\"          |\n| mtd3  | 0003c000 | 00001000  | \"config\"        |\n| mtd4  | 00300000 | 00001000  | \"k0\"            |\n| mtd5  | 004c0000 | 00001000  | \"r0\"            |\n| mtd6  | 00300000 | 00001000  | \"k1\"            |\n| mtd7  | 004c0000 | 00001000  | \"r1\"            |\n| mtd8  | 00001000 | 00001000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00001000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00001000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00001000  | \"Partition_011\" |\n| mtd12 | 00300000 | 00001000  | \"linux\"         |\n| mtd13 | 004c0000 | 00001000  | \"rootfs\"        |\n\nThis ONT supports dual boot. \n\n`k0` and `r0` respectively contain the kernel and firmware of the first image, `k1` and `r1` the kernel and the firmware of the second one\n\n# GPON/OMCI settings\n\n{% include alert.html content=\"Some variables are write-protected, you need to unlock them before proceeding\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nUse the following command to unlock write-protected variables:\n\n```sh\n# nv setenv ProtectEnv 0\n```\n\n## Getting/Setting ONU GPON Serial Number\n\n{% include alert.html content=\"If your serial number has letters after the Vendor ID (e.g. ZTEGAAA01234), put them in lower case (e.g. ZTEGaaa01234)\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# nv setenv GponSn ZTEGaaa01234\n```\nReboot the ONT to apply any changes\n\nYou can check if the serial number was correctly changed using the following command:\n\n```sh\n# diag gpon get serialnumber\nZTEGaaa01234\n```\n\n## Getting/Setting ONU GPON PLOAM password\n\n{% include alert.html content=\"The PLOAM password is stored in ASCII format\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# /etc/scripts/flash get GPON_PLOAM_PASSWD\nGPON_PLOAM_PASSWD=AAAAAAAAAA\n# /etc/scripts/flash set GPON_PLOAM_PASSWD AAAAAAAAAA\n```\nIt seems Genexis has also included a U-Boot variable to store the PLOAM. On currently known firmwares (5.6.1 and 5.7.0) it is not read by the `omci_app` daemon.\nFor future-proofing reasons, set your PLOAM also on the before-mentioned U-Boot env using the following command in the OS shell:\n\n```sh\n# nv setenv ploampwd 1234567890\nploampwd=1234567890\n```\n## Setting OMCI software version (ME 7)\n\nThe stock firware does not allow changing of the primary and standby software version. \nAs the ONT uses the Luna SDK, the `/etc/scripts/flash` shell script can be easily modified by creating a custom firmware with the same set of patches suggested e.g. for the [Technicolor AFM0002](/ont-technicolor-afm0002) ONT.\n\nYou can then check if the software version was changed correctly with this command (take a look at the `Version` field):\n\n```sh\n# omcicli mib get 7\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nSWImage\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n=================================\nEntityID: 0x00\nActive: 0\nCommitted: 0\nValid: 1\n*Version: V6.0.10N14*\nProductCode:\nImageHash: 0x00000000000000000000000000000000\n=================================\n=================================\nEntityID: 0x01\nActive: 1\nCommitted: 1\nValid: 1\n*Version: V6.0.10N14*\nProductCode:\nImageHash: 0x00000000000000000000000000000000\n=================================\n```\n\n## Setting OMCI hardware version (ME 256)\n\n```sh\n# nv setenv HV G2110CE2V1D0\n```\nReboot the ONT to apply the change\n\n## Setting OMCI equipment ID (ME 257)\n\n```sh\n# nv setenv ProdName FT-G2110C-2.5G\n```\nReboot the ONT to apply the change\n\n# Advanced settings\n\n## Setting management IP\n```sh\n# /etc/scripts/flash get LAN_IP_ADDR\nLAN_IP_ADDR=192.168.1.1\n# /etc/scripts/flash set LAN_IP_ADDR 192.168.1.1\n ```\n\n# Known Bugs\n- The web UI can be enabled by modding the firmware, but the daemon will crash if no optical signal is received\n\n# Miscellaneous Links\n- [FiberTwist G2110C-2.5G](https://genexis.eu/content/uploads/2020/07/FiberTwist-G2110C-2.5G-Installation-Guide-v1.0-EN.pdf)\n\n"
  },
  {
    "path": "_ont/ont-genexis-ft-g2110c.md",
    "content": "---\ntitle: FiberTwist G2110C\nhas_children: false\nlayout: default\nparent: Genexis\n---\n\n# Hardware Specifications\n\n|                 |                    |\n| --------------- | ------------------ |\n| Vendor/Brand    | Genexis FiberTwist |\n| Model           | G2110C             |\n| Chipset         |                    |\n| Flash           |                    |\n| RAM             |                    |\n| System          |                    |\n| LAN             | 1 GBaseT           |\n| Optics          | SC/APC             |\n| IP address      |                    |\n| Web Gui         |                    |\n| SSH             |                    |\n| Telnet          |                    |\n| Serial          |                    |\n| Serial baud     |                    |\n| Serial encoding |                    |\n| Form Factor     | ONT                |\n\n{% include image.html file=\"ft-g2110c-front.jpg\"  alt=\"FiberTwist G2110C Front\" caption=\"FiberTwist G2110C Front\" %}\n\n{% include image.html file=\"ft-g2110c-back.jpg\"  alt=\"FiberTwist G2110C Back\" caption=\"FiberTwist G2110C Back\" %}\n\n{% include image.html file=\"ft-g2110c-ports.jpg\"  alt=\"FiberTwist G2110C Ports\" caption=\"FiberTwist G2110C Ports\" %}\n\n\n## Optical Header installation backplate\n{% include image.html file=\"ft-g2110c-optical-header-1.jpg\"  alt=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" caption=\"FiberTwist G2110C-2.5G Optical Header installation backplate\" %}\n\n\n# Miscellaneous Links\n- [FiberTwist G2110C](https://genexis.eu/wp-content/uploads/2024/08/FiberTwist-G2110C-Installation-Guide-v.3.0-EN.pdf)\n\n"
  },
  {
    "path": "_ont/ont-genexis.md",
    "content": "---\ntitle: Genexis\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont/ont-halny-hl-gsfp.md",
    "content": "---\ntitle: HALNy HL-GSFP\nhas_children: false\nlayout: default\nparent: HALNy\n---\n\n# Hardware Specifications\n\n|                  |                      |\n| ---------------- | -------------------- |\n| Vendor/Brand     | HALNy                |\n| Model            | HL-GSFP              |\n| ODM              | T&W                  |\n| ODM Product Code | TW2362H-CDEL         |\n| Chipset          | Lantiq PEB98035      |\n| Flash            | 8 MB                 |\n| RAM              | 64 MB                |\n| CPU              | MIPS 34Kc interAptiv |\n| CPU Clock        | 400MHz               |\n| System           | OpenWRT              |\n| HSGMII           | Yes                  |\n| Optics           | SC/APC               |\n| IP address       | 192.168.77.154/30    |\n| Web Gui          | none                 |\n| SSH              | port 22666           |\n| Telnet           |                      |\n| Serial           | ✅                   |\n| Serial baud      | 115200               |\n| Serial encoding  | 8-N-1                |\n| Form Factor      | miniONT SFP          |\n\n{% include image.html file=\"hl-gsfp-1.png\"  alt=\"HALNy HL-GSFP top\" caption=\"HALNy HL-GSFP top\" %}\n{% include image.html file=\"hl-gsfp-2.png\"  alt=\"HALNy HL-GSFP bottom\" caption=\"HALNy HL-GSFP bottom\" %}\n\n## Firmware is interchangeable with:\n\n- [Zyxel PMG3000-D20B](/ont-zyxel-pmg3000-d20b)\n- [D-LINK DPN-100-Rev-A2](/ont-d-link-dpn-100-rev-a2)\n- [Zisa OP151s](/ont-zisa-op151s)\n- [T&W TW2362H-CDEL](/ont-t-w-tw2362h-cdel)\n\n## List of partitions\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00020000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 003d0000 | 00010000  | \"image0\"      |\n| mtd3 | 003d0000 | 00010000  | \"linux\"       |\n| mtd4 | 002a87aa | 00010000  | \"rootfs\"      |\n| mtd5 | 000a0000 | 00010000  | \"rootfs_data\" |\n\n\n"
  },
  {
    "path": "_ont/ont-halny.md",
    "content": "---\ntitle: HALNy\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-hilink-hl23446.md",
    "content": "---\ntitle: Hilink HL23446\nhas_children: false\nalias: CarlitoxxPro CPGOS03-0490 v1\nlayout: default\nparent: Hilink\n---\n\n# Hardware Specifications\n\n|              |                      |\n| ------------ | -------------------- |\n| Vendor/Brand | Hilink               |\n| Model        | HL23446              |\n| Chipset      | Lantiq PEB98035      |\n| Flash        | 16 MB                |\n| RAM          | 64 MB                |\n| CPU          | MIPS 34Kc interAptiv |\n| CPU Clock    | 400MHz               |\n| System       | OpenWRT              |\n| HSGMII       | Yes                  |\n| Optics       | SC/APC               |\n| IP address   |                      |\n| Web Gui      | ✅                   |\n| SSH          |                      |\n| Telnet       |                      |\n| Serial       |                      |\n| Form Factor  | miniONT SFP          |\n\n{% include image.html file=\"hl23446.png\" alt=\"Hilink HL23446\" caption=\"Hilink HL23446\" %}\n\n## Possible Clones\n- CarlitoxxPro CPGOS03-0490 **v1**\n\n## Firmware is interchangeable with:\n\n- [Huawei MA5671A](/ont-huawei-ma5671a)\n- [Nokia G-010S-P](/ont-nokia-g-010s-p)\n- [FS.com GPON ONU Stick with MAC / SourcePhotonics SPS-34-24T-HP-TDFO](/ont-fs-com-gpon-onu-stick-with-mac)\n- {:.text-red-200 } Dasan H650SFP \n- {:.text-red-200 } DpOptics D23446    \n- {:.text-red-200 } Photonics SPS-34-24T-HP-TDFO\n\n## List of partitions\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 00740000 | 00010000  | \"linux\"       |\n| mtd3 | 0061eedc | 00010000  | \"rootfs\"      |\n| mtd4 | 00370000 | 00010000  | \"rootfs_data\" |\n| mtd5 | 00800000 | 00010000  | \"image1\"      |\n\n\n# Miscellaneous Links\n\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n\n"
  },
  {
    "path": "_ont/ont-hilink.md",
    "content": "---\ntitle: Hilink\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-hisense-lte3415-sca+.md",
    "content": "---\ntitle: HiSense LTE3415-SCA+\nhas_children: false\nredirect_to: /ont-technicolor-afm0002\nlayout: default\nparent: HiSense\n---"
  },
  {
    "path": "_ont/ont-hisense-lte3415-sh+.md",
    "content": "---\ntitle: HiSense LTE3415-SH+\nhas_children: false\nredirect_to: /ont-technicolor-afm0003\nlayout: default\nparent: HiSense\n---"
  },
  {
    "path": "_ont/ont-hisense.md",
    "content": "---\ntitle: HiSense\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-huawei-eg8010h.md",
    "content": "---\ntitle: Huawei EG8010H \nhas_children: false\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n|              |                                                                                      |\n| ------------ | ------------------------------------------------------------------------------------ |\n| Vendor/Brand | Huawei                                                                               |\n| Model        | EG8010H                                                                              |\n| ODM          | ✅                                                                                   |\n| Chipset      | HiSilicon                                                                            |\n| Flash        | 128MiB SLC NAND (DS35Q1GA-IB)                                                        |\n| RAM          | 256MiB                                                                               |\n| CPU          | HiSilicon A9 dual core (ARMv7)                                                       |\n| System       | Dopra Linux                                                                          |\n| 2.5GBaseT    | No                                                                                   |\n| Optics       | SC/APC and SC/UPC                                                                    |\n| IP address   | 192.168.100.1 or 192.168.18.1                                                        |\n| Web Gui      | ✅ user `root`, password `admin` or `adminHW` and user `Epadmin`, password `adminEp` |\n| SSH          |                                                                                      |\n| Telnet       | After enabling, user `root`, password `admin` or `adminHW`                           |\n|              | user `Eproot`, password `adminEp`                                                    |\n| Serial       |                                                                                      |\n| Form Factor  | ONT                                                                                  |\n\n## Hardware revisions\n- v1: Horizontal PON port \n- v2: Horizontal PON port \n- v3: Vertical PON port\n- v4: Vertical PON port\n- v5: Vertical PON port\n- v6: Vertical PON port\n\n## List of software versions\n\n- V5R020C10S035\n\n{% include_relative ont-huawei-useful-command.md %}\n"
  },
  {
    "path": "_ont/ont-huawei-eg8010n.md",
    "content": "---\ntitle: Huawei EG8010N \nhas_children: false\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n|              |         |\n| ------------ | ------- |\n| Vendor/Brand | Huawei  |\n| Model        | EG8010N |\n| Chipset      |         |\n| Flash        |         |\n| RAM          |         |\n| CPU          |         |\n| System       |         |\n| 2.5GBaseT    | Yes     |\n| Optics       |         |\n| IP address   |         |\n| Web Gui      |         |\n| SSH          |         |\n| Telnet       |         |\n| Serial       |         |\n| Form Factor  | ONT     |\n\n\n"
  },
  {
    "path": "_ont/ont-huawei-hg8010h.md",
    "content": "---\ntitle: Huawei HG8010H \nhas_children: false\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n|              |                                                                                                |\n| ------------ | ---------------------------------------------------------------------------------------------- |\n| Vendor/Brand | Huawei                                                                                         |\n| Model        | HG8010H                                                                                        |\n| ODM          | ✅                                                                                             |\n| Chipset      | HiSilicon SD5116                                                                               |\n| Flash        | 128MiB (SLC NAND DS35Q1GA-IB)                                                                  |\n| RAM          | 256MiB                                                                                         |\n| CPU          | Hisilicon A9 dual core (ARMv7)                                                                 |\n| System       | Dopra Linux                                                                                    |\n| 2.5GBaseT    | No                                                                                             |\n| Optics       | SC/APC and SC/UPC                                                                              |\n| IP address   | 192.168.100.1                                                                                  |\n| Web Gui      | ✅ user `root`, password `admin` or `adminHW` and user `telecomadmin`, password `admintelecom` |\n| SSH          |                                                                                                |\n| Telnet       | After Enabling user `root`, password `admin` or `adminHW`                                      |\n| Serial       |                                                                                                |\n| Form Factor  | ONT                                                                                            |\n\n\n{% include image.html file=\"hg8010h.jpg\"  alt=\"HG8010H\" caption=\"HG8010H: Horizontal PON port (left, middle); vertical PON port (right)\" %}\n{% include image.html file=\"hg8010hvorr.jpg\"  alt=\"HG8010Hv3/4/5\" caption=\"Bottom of the HG8010Hv3/4/5\" %}\n{% include image.html file=\"hg8010hv6.jpg\"  alt=\"HG8010Hv6\" caption=\"Bottom of the HG8010Hv6\" %}\n\n## Hardware revisions\n- v1: Horizontal PON port \n- v2: Horizontal PON port \n- v3: Vertical PON port\n- v4: Vertical PON port\n- v5: Vertical PON port\n- v6: Vertical PON port\n\n## List of software versions\n\n- HWTCA31610003\n- V3R013C10S112\n- V3R015C10S106\n- V3R016C10S003 (V300R016C10SPC003B010)\n- V3R017C00S100\n- V3R017C10S201 (V300R017C10SPC201B255) \n- V5R020C10S020 (V500R020C10SPC020B014 - V500R020C10SPC020A2011020049)\n- V5R020C10S024 (V500R020C10SPC024B001)\n- V5R020C10S025 (V500R020C10SPC025B002)\n- V5R020C10S115 (V500R020C10SPC115B270)\n- V3R017C10S265\n\n## List of partitions\n\n0x000000000000-0x000000100000 : \"bootcode\" (1MiB)  \n0x000000100000-0x000008000000 : \"ubilayer_v5\" (127MiB)  \n\n{% include_relative ont-huawei-useful-command.md %}\n\n# Miscellaneous Links\n\n- [Exploring the Huawei HG8010H GPON ONT](https://www.linux.it/~md/text/gpon-sha2017.pdf)\n- [Unlock HG8010Hv3 softmode](https://lafibre.info/orange-installation/unlock-hg8010gv3-softmode/)\n- [Notes on a Huawei HG810H (N.B. SSL error)](https://umbriel.fr/blog/Notes_on_a_Huawei_HG8010H.html)\n- [Encrypt/Decrypt configuration file of most HuaWei HG routers](https://github.com/clippit/huawei-hg)\n\n\n# Teardown and other photos\n\n## v1-2\n\n{% include image.html file=\"hg8010h_teardown_1.jpg\"  alt=\"HG8010Hv1/2 Teardown\" caption=\"HG8010Hv1/2: Teardown\" %}\n{% include image.html file=\"hg8010h_teardown_2.jpg\"  alt=\"HG8010Hv1/2 Teardown\" caption=\"HG8010Hv1/2: Teardown\" %}\n\n## v6\n\n{% include image.html file=\"hg8010h_teardown_1_v6.jpg\"  alt=\"HG8010Hv6 Teardown\" caption=\"HG8010Hv6: Teardown\" %}\n{% include image.html file=\"hg8010h_teardown_2_v6.jpg\"  alt=\"HG8010Hv6 Teardown\" caption=\"HG8010Hv6: Teardown\" %}\n"
  },
  {
    "path": "_ont/ont-huawei-hg8110h.md",
    "content": "---\ntitle: Huawei HG8110H\nhas_children: false\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Huawei                           |\n| Model           | HG8110H                          |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Openreach FTTP deployment](https://www.openreach.com/fibre-broadband)\n"
  },
  {
    "path": "_ont/ont-huawei-hg8240h.md",
    "content": "---\ntitle: Huawei HG8240H\nhas_children: false\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Huawei                           |\n| Model           | HG8240H                          |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Openreach FTTP deployment](https://www.openreach.com/fibre-broadband)\n"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-carlito.md",
    "content": "---\ntitle: Carlito Firmware for Huawei MA5671A\nhas_children: false\nparent: Huawei MA5671A\nlayout: default\n---\n\n{% include alert.html content=\"Be careful, backup goi_config from uboot before changing the firmware.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# GPON ONU status\n\n## Querying a particular OMCI ME\n```sh\nomci_pipe.sh meg MIB_IDX ME_IN\n```\nWhere `MIB_IDX` is the MIB ID and `ME_IN` is the ME instance number\n\n## Getting/Setting Speed LAN Mode\n\nTo enable the interface to sync at 2.5 Gbps / using HSGMII with auto-neg on:\n\n```sh\nfw_setenv sgmii_mode 5\n```\n\nTo revert the afore-mentioned command:\n```sh\nfw_setenv sgmii_mode\n```\n\nTo check the set value fo the LAN Mode:\n\n```sh\nonu lanpsg 0\n```\nThe `link_status` variable tells the current speed:\n\n| Value (for `sgmii_mode` and `link_status`) | Speed                              |\n| ------------------------------------------ | ---------------------------------- |\n| 3                                          | 1 Gbps / SGMII with auto-neg on    |\n| 4                                          | 1 Gbps / SGMII with auto-neg off   |\n| 5                                          | 2.5 Gbps / HSGMII with auto-neg on |\n\n# GPON/OMCI settings\n\n## Getting/Setting OMCI software version (ME 7)\n```sh\nfw_setenv image0_version V1.7.6-170626\nfw_setenv image1_version V1.7.6-170626\n```\n\n## Setting ONU GPON PLOAM password\n```sh\nfw_setenv nPassword \"0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39\"\n```\nor\n```sh\nuci set gpon.ploam.nPassword=\"0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39\"\nuci commit \n```\n\n## Setting ONU GPON LOID and LOID password\n```sh\nfw_setenv omci_loid 1234567890\nfw_setenv omci_lpwd password01\n```\nIf LOID is disabled in the firmware try alternative software.\n\n## Setting ONU GPON Serial Number\n```sh\nfw_setenv ont_serial ABCD12345678\n```\nor\n```sh\nuci set gpon.ploam.nSerial=\"0x48 0x57 0x54 0x43 0x9D 0xAC 0xC7 0xA3\"\nuci commit \n```\n\n## Setting and checking oem-generic\n```sh\nfw_setenv target oem-generic\nfw_printenv target=oem-generic\n```"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-fs-mod.md",
    "content": "---\ntitle: FS Modded Firmware for Huawei MA5671A and FS.com GPON-ONU-34-20BI\nhas_children: false\nparent: Huawei MA5671A\nlayout: default\n---\n\n{% include alert.html content=\"The following wiki is only compatible with version 5 or later!\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n\n# Flashing the firmware\n\nFlash the firmware image to image0 or image1 via [SSH](/ont-huawei-ma5671a/#flashing-a-new-rootfs-via-ssh) or via [TTL serial](/ont-huawei-ma5671a-ymodem) as usual.\n\nAfter flashing, it is absolutely necessary to connect to the SFP via telnet using the IP 192.168.1.10:\n\n```sh\ntelnet 192.168.1.10\n```\n\nOnce connected via telnet to the SFP, execute the following commands. Then wait a few minutes until the end of the automatic procedure:\n\n```sh\nfirstboot\nreboot\n```\n\nPerforming the procedure described above is necessary after each flash of this firmware, otherwise the SFP will not work!\n\n# Login info\n\n|                    |                                                |\n| ------------------ | ---------------------------------------------- |\n| Username           | root                                           |\n| Password           | root                                           |\n| IP address\t     | 192.168.1.10                                   |\n| Telnet    \t     | Always available                               |\n| TTL Serial \t     | Always available                               |\n| SSH       \t     | Only after the first configuration (firstboot) |\n| Web       \t     | NO                                             |\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n```sh\nonu ploam_state_get\n```\n\n## Getting optical laser status\n```sh\notop -g s\n```\n\n## Getting information of the OLT vendor\n```sh\nomci_pipe.sh meg 131 0\n```\n\n## Querying a particular OMCI ME\n```sh\nomci_pipe.sh meg MIB_IDX ME_IN\n```\nWhere `MIB_IDX` is the MIB ID and `ME_IN` is the ME instance number.\n\n## Getting VLAN table rule\n```sh\ngtop -g \"GPE VLAN rule\"\n```\n\n## Getting GEM port status table\n```sh\ngtop -g e\n```\n\n## Getting/Setting Speed LAN Mode\n\nTo get the LAN Mode:\n\n```sh\nonu lan_port_status_get 0\n```\nThe `link_status` variable tells the current speed:\n\n| Value (for `sgmii_mode` and `link_status`) | Speed                              |\n| ------------------------------------------ | ---------------------------------- |\n| 3                                          | 1 Gbps / SGMII with auto-neg on    |\n| 4                                          | 1 Gbps / SGMII with auto-neg off   |\n| 5                                          | 2.5 Gbps / HSGMII with auto-neg on |\n\nTo change the default lan mode value you can use `fw_setenv sgmii_mode`. The firmware is already set to 2.5G auto-negotiation, you shouldn't touch it.\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n```sh\nfw_setenv onu_serial \"YOUR_SERIAL_ASCII\"\n```\n\n## Setting ONU GPON PLOAM password\n```sh\nfw_setenv onu_ploam \"YOUR_PLOAM_ASCII\"\n```\n\n{% include alert.html content=\"If your ploam is in HEX convert it to ASCII, any non-printable characters write them in HEX with a slash in front, such as `\\0x7F`. If the PLOAM is less than 10 bytes (one printable character counts as one byte, `\\0x7F` also counts as one byte) add `\\0x00` to the end to get to 10 bytes.\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n## Setting ONU GPON LOID\n```sh\nfw_setenv onu_loid \"YOUR_LOID\"\n```\n\n## Setting ONU GPON LOID password\n```sh\nfw_setenv onu_loid_password \"YOUR_LOID_PASSWORD\"\n```\n\n## Setting OMCI vendor ID (ME 256)\n```sh\nfw_setenv omci_vendor_id \"YOUR_VENDOR_ID\"\n```\n\n## Setting OMCI equipment ID (ME 257)\n```sh\nfw_setenv omci_equip_id \"YOUR_EQUIP_ID\"\n```\n\n## Setting OMCI hardware version (ME 256)\n```sh\nfw_setenv omci_hw_ver \"YOUR_HW_VER\"\n```\n\n## Setting OMCI software version (ME 7)\n```sh\nfw_setenv image0_version \"YOUR_SW_VERSION_0\"\nfw_setenv image1_version \"YOUR_SW_VERSION_1\"\n```\n\n# Advanced settings\n\n{% include alert.html content=\"Changing these is normally not necessary and not changing them is a good idea\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n\n## Setting custom OMCI MIB file\n\nCopy the MIB file to /etc/mibs, then run this command:\n\n```sh\nfw_setenv mib_file_custom \"YOUR_MIB_FILENAME\"\n```\n\n## Setting management IP\n```sh\nfw_setenv ipaddr www.xxx.yyy.zzz\n```\n\n## Restore SFP to default config\n```sh\nfirstboot\nreboot\n```\n\n# SFP EEPROM settings\n\n{% include alert.html content=\"Changing these is normally not necessary and not changing them is a good idea\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n\n## Setting SFP vendor name\n```sh\nfw_setenv sfp_vendor_name \"YOUR_SFP_VENDOR_NAME\"\n```\n\n## Setting SFP part name\n```sh\nfw_setenv sfp_part_name \"YOUR_SFP_PART_NAME\"\n```\n\n## Setting SFP vendor revision\n```sh\nfw_setenv sfp_vendor_rev \"YOUR_SFP_VENDOR_REV\"\n```\n\n## Setting SFP part serial\n```sh\nfw_setenv sfp_part_serial \"YOUR_SFP_PART_SERIAL\"\n```\n\n## Setting SFP manufacturing date code\n```sh\nfw_setenv sfp_date_code \"YOUR_SFP_DATE_CODE\"\n```\n\n## Setting SFP vendor data\n```sh\nfw_setenv sfp_vendor_data \"YOUR_SFP_VENDOR_DATA\"\n```\n\n# List of firmwares and files\n- [6BA1896SPLQA42_MODDED_ver5-1.img](https://mega.nz/file/5tNwFC5A#aXOlrZgLZ6sL81CKDOoBmXotLqDTJLQzpvokYU--bz0){: .btn } md5hash: c4f1bbe1695803d3d449f911f43d78ea\n- [6BA1896SPLQA42_MODDED_ver4.img](https://mega.nz/file/Q4dFTBqQ#L8N7kPZtSJ7FtbtxRcnxNF-W3b9wDbCeJ82YgnK7moQ){: .btn } md5hash: 63b0cc790c0087a5a1197c89b502b002\n- [6BA1896SPLQA42_MODDED_ver3.img](https://mega.nz/file/YkMwHSgR#7Sdk0LIBv3hLQJKQ4TBub4ABtwYyCAdP6Rl2C3RBztw){: .btn } md5hash: 90348ff0ccaad475cf14d9d0a056cf72\n"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-root-web.md",
    "content": "---\ntitle: Root Procedure for Huawei MA5671A (V3)\nhas_children: false\nparent: Huawei MA5671A\nlayout: default\n---\n\n# Root the stick\n\nConnect the SFP adapter to the TTL adapter according to the following diagram:\n\n| USB TTL (UART) Adapter | wire colour in picture | SFP 20pins Molex connector |\n| ---------------------- | ---------------------- | -------------------------- |\n| 3.3V                   | red                    | 3.3 (pin #15 and #16)      |\n| TX                     | green                  | RX (pin #2)                |\n| RX                     | blue                   | TX (pin #7)                |\n| GND                    | black                  | GND (pin #14)              |\n\n{% include image.html file=\"web-root-procedure/ttl-sfp.jpg\" alt=\"Example of how the molex SFP - TTL connection should look like\" caption=\"Example of how the molex SFP - TTL connection should look like\" %}\n\n{% include image.html file=\"web-root-procedure/sfp-sfp.jpg\" alt=\"Example of how the SFP - molex SFP connection should look like\" caption=\"Example of how the SFP - molex SFP connection should look like\" %}\n\n{% include alert.html content=\"Try PIN 10 or other GND PINs if the connection doesn't work with PIN 14.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\nConnect the TTL adapter to the computer, once done press the following button. A window will open that will execute the root.\n\n{: .text-center .fs-6 }\n<button id=\"start-button\" class=\"btn btn-blue\" data-jtd-toggle=\"modal\" data-jtd-target=\"#root-modal\" disabled>Start root!</button>\n<div id=\"browser-error\" style=\"display:none\">{% include alert.html content=\"This browser is not compatible with the web-root procedure. See the <a href='https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility'>Browser compatibility</a>\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}</div>\n{% include root_lantiq.html modelName=\"Huawei MA5671A\" unlockHuaweiShell=true %}\n<noscript>\n{% include alert.html content=\"Your browser does not support JavaScript!\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n</noscript>\n\n{% include alert.html content=\"If this procedure does not work, you can use this [alternative procedure](/ont-huawei-ma5671a-ymodem)\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Connect to the stick via SSH\n\nAfter this is done, reboot the stick, after connecting it to a router via an ethernet mediaconverter or directly plugging it in an SFP port, with the port's IP set to any IP of the `192.168.1.0/24` subnet (the stick has the IP `192.168.1.10`)\n\n{% include alert.html content=\"If your LAN subnet is `192.168.1.0/24` make sure you have no ip conflicts.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"On some SFP host devices you might not be able to connect to the stick if there's no optical signal (RX loss), in that case you need to connect the fiber to make changes on the stick\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\nRun the terminal and login to the stick using ssh:\n\n```shell\nssh root@192.168.1.10\n```\n\nThe password is `admin123`.\n\n{% include alert.html content=\"If you use a modern OpenSSH version (e.g. >= 8.8) you will have to enable some deprecated algorithms: `ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss root@192.168.1.10`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# TX Fault / Serial\n\nThe stick stays in a perpetual \"TX Fault\" state since the same SFP pin is used for both serial and TX Fault signaling. If that causes you issues (normally it shouldn't), you can issue the commands below to disable it. Note that it will disable both the TX Fault signal and Serial on the stick after boot.\n\n```sh\nfw_setenv asc0 1\nfw_setenv preboot \"gpio set 3;gpio input 100;gpio input 105;gpio input 106;gpio input 107;gpio input 108\"\n```\n\nIn case you need to re-enable it, issue the following commands from the bootloader (FALCON)\n\n```sh\nFALCON => setenv asc0 0\nFALCON => saveenv\n```\n\n# Miscellaneous Links\n- [List of root procedure for Huawei MA5671A](/ont-huawei-ma5671a-root)\n"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-root.md",
    "content": "---\ntitle: List of Root Procedure for Huawei MA5671A\ndescription: For documentation purposes only. This page contains the history of root procedures for the Huawei MA5671A stick. \nhas_children: false\nparent: Huawei MA5671A\nlayout: default\nnav_exclude: true\nsearch_exclude: true\n---\n\n{% include alert.html content=\"It is strongly recommended that you only ever use the latest version ([Web root procedure](/ont-huawei-ma5671a-root-web)).\n\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Root Procedure for Huawei MA5671A (V3 - Web serial)\n\nCan be accessed via the link [Web root procedure](/ont-huawei-ma5671a-root-web)\n\n{% include alert.html content=\"If this procedure does not work, you can use this [alternative procedure](/ont-huawei-ma5671a-ymodem). Do not use the V2 and V1 versions under any circumstances.\" alert=\"Info\" icon=\"svg-warning\" color=\"red\" %}\n\n# Root Procedure for Huawei MA5671A (V2 - Python)\n\n{% include alert.html content=\"This version remains for documentation purposes only. Please use the latest procedure: [Web root procedure](/ont-huawei-ma5671a-root-web)\" alert=\"Important\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"It is strongly recommended that you only ever use the latest version ([Web root procedure](/ont-huawei-ma5671a-root-web)).\n\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n1. Take the SFP molex and four coloured cables and solder them to the molex according to the following diagram:\n\n| USB TTL (UART) Adapter | wire colour in picture | SFP 20pins Molex connector |\n| ---------------------- | ---------------------- | -------------------------- |\n| 3.3V                   | red                    | pin #15 and #16            |\n| TX                     | orange                 | pin #2                     |\n| RX                     | yellow                 | pin #7                     |\n| GND                    | green                  | pin #14                    |\n\n{% include alert.html content=\"Use the GND wire as an ON/OFF switch, otherwise there will be a slight delay before data is displayed on the console (putty/TeraTerm).\" alert=\"Important\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Try PIN 10 or other GND PINs if the connection doesn't work with PIN 14.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{:style=\"counter-reset:none\"}\n1. Install python and `pyserial` with `pip`\n```shell\npip install pyserial\n```\n1. Make the connections as shown to a TTL adapter except for GND (which should remain detached as it is used as a switch)\n\n{% include image.html file=\"ma5671a-root-1.jpg\" alt=\"Example of how the sfp-ttl connection should look like\" caption=\"Example of how the sfp-ttl connection should look like\" %}\n{% include image.html file=\"new-root-procedure/board-molex-arduino.jpg\" alt=\"Example of how the sfp-ttl connection should look like with a custom board\" caption=\"Example of how the sfp-ttl connection should look like with a custom board\" %}\n{% include image.html file=\"ma5671a-root-2.jpg\" alt=\"SFP Molex\" caption=\"SFP Molex\" %}\n\n{:style=\"counter-reset:none\"}\n1. Open Tera Term (or other serial terminal emulators), find the correct serial port of the TTL adapter, change the port on the script on line 7 instead of `COM8`.\n1. After this, run the following python script and connect the GND pin:\n\n```py\nimport sys\nimport time\n\nimport serial.tools\n\ntry:\n    ser = serial.Serial(\"COM8\", 115200, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)\n    print('[+] Use serial port device:', ser.name)\n    print('[+] Waiting for trigger characters...')\n    while True:\n        try:\n            recv = ser.readline().decode()\n        except Exception as x:\n            print(\"Decode errore\", x)\n            continue\n        if recv.startswith('U-Boot'):\n            print('[+] Received! transfer enable command...')\n            print('[+] Transfer command sequence 1')\n            t_end = time.time() + 3\n            while time.time() < t_end:\n                ser.write(chr(3).encode())\n            time.sleep(1)\n            print('[+] Transfer command sequence 2')\n            ser.write('setenv bootdelay 3\\n'.encode())\n            time.sleep(1)\n            print('[+] Transfer command sequence 3')\n            ser.write('setenv asc0 0\\n'.encode())\n            time.sleep(1)\n            print('[+] Transfer command sequence 4')\n            ser.write('setenv preboot \"gpio set 3;gpio input 2;gpio input 105;gpio input 106;gpio input 107;gpio input 108\"\\n'.encode())\n            time.sleep(1)\n            print('[+] Transfer command sequence 5')\n            ser.write('saveenv\\n'.encode())\n            time.sleep(3)\n            print('[+] Transfer command sequence 6')\n            ser.write('reset\\n'.encode())\n            print('[+] Enable command transfer complete! rebooting...')\n            break\n        else:\n            print(recv)\nexcept Exception as e:\n    try:\n        print('[!] Error:', e)\n        sys.exit(1)\n    finally:\n        e = None\n        del e\n\nexcept (KeyboardInterrupt, SystemExit):\n    ser.close()\n    sys.exit(1)\n```\n{% include alert.html content=\"Originally, this other string was used for the `setenv preboot`: `gpio input 105;gpio input 106;gpio input 107;gpio input 108;gpio set 3;gpio set 109;gpio set 110;gpio clear 423;gpio clear 422;gpio clear 325;gpio clear 402;gpio clear 424`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n{:style=\"counter-reset:none\"}\n1. Reboot the stick\n1. Open Tera Term (or other serial terminal emulators), after it has loaded press `enter` to activate the console\n\n{% include image.html file=\"new-root-procedure/press-enter.jpg\" alt=\"Press enter to activate the console\" caption=\"Press enter to activate the console\" %}\n\n{:style=\"counter-reset:none\"}\n1. With `sed` change the default shell from `/opt/lantiq/bin/minishell` to `/bin/ash` by editing the file `/etc/passwd`:\n\n```shell\nsed -i  \"s|/opt/lantiq/bin/minishell|/bin/ash|g\" /etc/passwd\n```\n{% include alert.html content=\"Do not use `vim`!\" alert=\"Important\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"Be aware that kernel panics happen often! If a kernel panic happens wait for the reboot and quickly try again.\" alert=\"Important\" icon=\"svg-warning\" color=\"yellow\" %}\n\n\n```shell\n[   34.612000] Kernel panic - not syncing: Fatal exception in interrupt\n[   34.612000] Rebooting in 3 seconds..\n```\n\n{% include alert.html content=\"The cause of these kernel panics could be insufficient supply of power.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n{:style=\"counter-reset:none\"}\nAfter this is done, reboot the stick, after connecting it to a router via an ethernet mediaconverter or directly plugging it in an SFP port, with the port's IP set to any IP of the `192.168.1.0/24` subnet (the stick has the IP `192.168.1.10`)\n\n{% include alert.html content=\"If your LAN subnet is `192.168.1.0/24` make sure you have no ip conflicts.\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"On some SFP host devices you might not be able to connect to the stick if there's no optical signal (RX loss), in that case you need to connect the fiber to make changes on the stick\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{:style=\"counter-reset:none\"}\n1. Run the terminal and login to the stick with ssh\n\n```shell\nssh root@192.168.1.10\n```\n\nThe password is `admin123`.\n\n{% include alert.html content=\"If you use a modern OpenSSH version (e.g. >= 8.8) you will have to enable some deprecated algorithms: `ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss [...]`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Root Procedure for Huawei MA5671A (V1 - Tweezers)\n\n{% include alert.html content=\"This version remains for documentation purposes only. Please use the latest procedure: [Web root procedure](/ont-huawei-ma5671a-root-web)\" alert=\"Important\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"This procedure requires the physical disassembly of the stick, and the use of tweezers that can burn the stick, it is highly recommended not to use it.\" alert=\"Important\" icon=\"svg-warning\" color=\"red\" %}\n\n1. Take the SFP molex and the 4 coloured cables and solder them to the molex according to the following diagram:\n\n| USB TTL (UART) Adapter | wire colour in picture | SFP 20pins Molex connector |\n| ---------------------- | ---------------------- | -------------------------- |\n| 3.3V                   | red                    | pin #15 and #16            |\n| TX                     | orange                 | pin #2                     |\n| RX                     | yellow                 | pin #7                     |\n| GND                    | green                  | pin #10                    |\n\n{% include alert.html content=\"Use GND wire as ON/OFF switch, otherwise there will be a slight delay before data is displayed on the console (putty/TeraTerm).\" alert=\"Important\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include image.html file=\"ma5671a-root-1.jpg\" alt=\"Example of how the sfp-ttl connection should look like\" caption=\"Example of how the sfp-ttl connection should look like\" %}\n{% include image.html file=\"ma5671a-root-2.jpg\" alt=\"Molex SFP\" caption=\"Molex SFP\" %}\n\n{:style=\"counter-reset:none\"}\n1. Disassemble the stick by releasing the metal tabs that hold the cover in place. There are two tabs, one on each side, inside these holes:\n\n{% include image.html file=\"ma5671a-root-4.jpg\" alt=\"Metal tabs that hold the cover in place\" caption=\"Metal tabs that hold the cover in place\" %}\n\n{:style=\"counter-reset:none\"}\n1. Once you have removed the metal casing, you are left with the half-naked stick. Note that the release mechanism also comes off easily, so it is recommended to take a photo and to memorise the positioning to be able to put it back together in the case it does come off.\n\n1. Before shorting the stick, connect the previously soldered cables and molex to the USB serial (photo immediately below) and to the stick (via the molex, of course) and check that the jumper on the usb key is set to 3.3V\n\n{% include image.html file=\"ma5671a-root-8.jpg\" alt=\"TTL\" caption=\"TTL\" %}\n\n{:style=\"counter-reset:none\"}\n1. The disassembled stick will appear as in the photo: the two pins to be shorted are highlighted in red. In the photo below a wire is used, but a pair of tweezers is sufficient (I used those, in fact). Be careful not to touch anything around the two pins by possibly covering everything else with electrical tape.\n\n{% include image.html file=\"ma5671a-root-4.jpg\" alt=\"tweezers\" caption=\"tweezers\" %}\n{% include image.html file=\"ma5671a-root-6.jpg\" alt=\"tweezers\" caption=\"tweezers\" %}\n{% include image.html file=\"ma5671a-root-5.jpg\" alt=\"tweezers and eletrical tape\" caption=\"tweezers and eletrical tape\" %}\n{% include image.html file=\"ma5671a-root-6.jpg\" alt=\"tweezers\" caption=\"tweezers\" %}\n\n{:style=\"counter-reset:none\"}\n1. For the moment connect all cables to the usb key except the green (ground) or red (voltage), otherwise the stick will boot before you can do the following (N.B. for those who bought the uart above RX and TX are reversed). Open and configure Tera Term for serial connection  by selecting the correct com port, speed 115200 bauds, english language (otherwise in japanese you can't read anything understandable), then insert the key in the PC (the adapter being already installed is taken for granted), short the 2 pins seen above and, while keeping the pins shorted, connect the missing coloured cable\n\n1. If nothing happens, you have obviously done something wrong with cables, molexes, soldering irons, etc., so you will have to start from the beginning again and work out which step you did wrong. \nIf you have done everything correctly, you should see something similar to the picture below:\n\n{% include image.html file=\"ma5671a-root-9.png\" alt=\"serial shell\" caption=\"serial shell\" %}\n\n{:style=\"counter-reset:none\"}\n1. Remove the short (tweezers or whatever you used), then type 7 and enter. You should see this:\n\n{% include image.html file=\"ma5671a-root-10.png\" alt=\"serial shell 2\" caption=\"serial shell 2\" %}\n\n{:style=\"counter-reset:none\"}\n1. From the Tera Term menu `FILE` → `TRANSFER` → `XMODEM` → `SEND` → `[1224abort.bin]` (which is the third of the files downloaded earlier):\n\n{% include image.html file=\"ma5671a-root-11.png\" alt=\"1224abort.bin\" caption=\"1224abort.bin\" %}\n\n{:style=\"counter-reset:none\"}\n1. As soon as the file transfer is complete, you have 2 seconds to press `CTRL+C`. If you have not done so, return to step 6. Otherwise, you should see:\n\n{% include image.html file=\"ma5671a-root-12.png\" alt=\"falcon shell\" caption=\"falcon shell\" %}\n\n{:style=\"counter-reset:none\"}\n1. To permanently unlock the bootloader, without having to repeat the previous steps, you must give the following commands:\n```\nFALCON => setenv bootdelay 5\nFALCON => setenv asc0 0\nFALCON => setenv preboot \"gpio set 3;gpio input 100;gpio input 105;gpio input 106;gpio input 107;gpio input 108\"\nFALCON => saveenv\n```\n\n{% include alert.html content=\"Originally, this other string was used for the `setenv preboot`: `gpio input 105;gpio input 106;gpio input 107;gpio input 108;gpio set 3;gpio set 109;gpio set 110;gpio clear 423;gpio clear 422;gpio clear 325;gpio clear 402;gpio clear 424`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n{% include alert.html content=\"Instead of taking the next steps, it is recommended to boot and run the `sed` command documented in V2\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n{:style=\"counter-reset:none\"}\n1. If you have done everything correctly you can reboot the stick (if you are convinced that everything is ok you could also close it again), disconnect and reconnect either the ground or voltage cable, then again you will have 5 seconds to lock the bootloader by doing a simple CTRL+C using the terminal. Now upload the firmware image of the first mtd2 partition to the stick with the command\n```\nFALCON => loadb 0x80800000\n```\nAt this point it will appear:\n\n{% include image.html file=\"ma5671a-root-13.jpg\" alt=\"shell requiring `mtd2` upload\" caption=\"shell requiring `mtd2` upload\" %}\n\n{:style=\"counter-reset:none\"}\n1. From the Tera Term menu do `FILE` → `TRANSFER` → `KERMIT` → `SEND` → `[mtd2.bin]`.\nIt will start uploading the file at a speed of about 3-4 KBps: it should take more than half an hour for the upload to complete.\n\n1. Once finished, the image loaded on the stick must also be saved to the corresponding system partition (the first of the 2) with the commands\n```\nFALCON => sf probe 0\nFALCON => sf erase C0000 740000\nFALCON => sf write 80800000 C0000 740000\n```\n\n1. Check that the stick is configured to boot from partition 0 (We are aware that mtd2 goes on 0 and mtd5 goes on 1, complain to Lantiq about this) with the command:\n```\nFALCON => printenv committed_image\n```\n1. If it is 0 there's no need to do anything, otherwise configure the stick to boot from partition 0 with the following commands, then check if the settings were changed correctly.\n```\nFALCON => setenv committed_image 0\nFALCON => saveenv\nFALCON => printenv committed_image\n```\n\n# Miscellaneous Links\n- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)\n- [Support MA5671A SFP GPON](https://forum.openwrt.org/t/support-ma5671a-sfp-gpon/48042)\n- [La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+](https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps/msg832904/#msg832904)\n- [Bypassing the HH3K up to 2.5Gbps using a BCM57810S NIC](https://www.dslreports.com/forum/r32230041-Internet-Bypassing-the-HH3K-up-to-2-5Gbps-using-a-BCM57810S-NIC)\n"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-rooted.md",
    "content": "---\ntitle: Huawei Rooted Firmware for Huawei MA5671A\nhas_children: false\nparent: Huawei MA5671A\nlayout: default\n---\n\n# Usage\n\n## Minishell\n\nThis firmware version offers a minishell in addition to the normal sh shell. Commands offered by minishell are as follows:\n\n{% include serial_dump.html file=\"ma5671a_minishell.txt\" alt=\"Huawei MA5671A minishell\" title=\"Huawei MA5671A minishell\" %}\n\n## Root\n\nFor general use, minishell does not allow any modifications and [Web root procedure](/ont-huawei-ma5671a-root-web) is required.\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\n```sh\nonu ploamsg\n```\n\n## Querying a particular OMCI ME\n```sh\nomci_pipe.sh meg MIB_IDX ME_IN\n```\nWhere `MIB_IDX` is the MIB ID and `ME_IN` is the ME instance number\n\n# GPON/OMCI settings\n\n{% include alert.html content=\"In this firmware, unlike the other ones, all data must be modified in a base64-encoded file. To simplify this, you can use the following web application.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n## Web procedure\n\n\n1. Get `fw_printenv sfp_a2_info` and paste into the form:\n\n<div id=\"app\">\n    <vue-lantiq-eeprom type='eeprom-rooted-edit'></vue-lantiq-eeprom>\n</div>\n<script src=\"https://unpkg.com/vue@latest\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue3-sfc-loader\"></script>\n<script src=\"/assets/js/vue-eeprom.js\"></script>\n\n{% include alert.html content=\"Executing these commands requires familiarity with `vim`. If you are not in any way familiar with `vim`, follow these commands precisely.\" alert=\"Danger\" icon=\"svg-warning\" color=\"red\" %}\n\n{:style=\"counter-reset:none\"}\n1. Copy the script's output to the clipboard \n1. Run the comman `vim /tmp/sfp_a2.txt` in the stick\n1. Press the right mouse button in the terminal or `CTRL`+`V`\n1. Press `ESC` command from keyboard\n1. Type `:wq`\n1. Run:\n\n\n```shell\nfw_setenv sfp_a2_info $(cat /tmp/sfp_a2.txt)\n```\n\n## Temporary file procedure\n\n1. Save `sfp_a2_info` in a temporary file\n\n```sh\nfw_printenv sfp_a2_info | sed \"s/^sfp_a2_info=//\" > /tmp/sfp_a2.txt\n```\nAnd print a pretty version:\n```sh\nfw_printenv sfp_a2_info | sed \"s/^sfp_a2_info=//\" | tr '@' '\\n'\n```\n\n2. Setting S/N\n\nThe S/N is stored on the 6th line, for example `4857544311223344` (where `48575443` is the HEX encoding of `HWTC`):\n```\nAAAAAAAAAAJIV1RDESIzRP///////////////////wAAAAAAAAAAAAAAAAAA\n00000000000000024857544311223344ffffffffffffffffffffffffffffff0000000000000000000000000000\n```\n\nThe entire S/N, including the PON ID, is first encoded in hexadecimal and then in base64\n\n3. Setting PLOAM Password\n\nThe PLOAM Password is stored on the 5th line, for example (`1234567890`):\n```\nffffffffffffffff00021437d77db7df7e37e77eb7ef7f37f77d00000000000000000000000000000000000000\n//////////8AAhQ31323334353637383930AAAAAAAAAAAAAAAAAAAAAAAAA\n```\n\nThe entire PLOAM, is first encoded in hexadecimal and then in base64\n\n4. Setting MAC Address\n\nThe MAC Address is stored on the 9th line, for example (`48:57:02:da:be:ef`):\n```\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASFcC2r7vAAAAAAAAAAAAAAAAAAAA\n000000000000000000000000000000000000000000000000485702dabeef000000000000000000000000000000\n```\n\n5. Transfer the modified file back into variable `sfp_a2_info`\n\n```sh\nfw_setenv sfp_a2_info $(cat /tmp/sfp_a2.txt)\n```\n\n## Reviewing and testing\n\nAfter rebooting, check whether the new variables have been saved correctly:\n\n```sh\nfw_printenv nPassword\nfw_printenv gSerial\nfw_printenv ethaddr\n```\n## Getting/Setting Speed LAN Mode\n\nTo get the LAN Mode:\n\n```sh\nonu lanpsg 0\n```\nThe `link_status` variable tells the current speed\n\n| Value (for `sgmii_mode` and `link_status`) | Speed                              |\n| ------------------------------------------ | ---------------------------------- |\n| 3                                          | 1 Gbps / SGMII with auto-neg on    |\n| 4                                          | 1 Gbps / SGMII with auto-neg off   |\n| 5                                          | 2.5 Gbps / HSGMII with auto-neg on |\n\nTo change the default lan mode value you can use `fw_setenv sgmii_mode`. The firmware is already set to 2.5G auto-negotiation, you shouldn't touch it.\n\n# Advanced settings\n\n## Disabling dying gasp\n\n```sh\nfw_setenv nDyingGaspEnable 0 \n```\n\n# Miscellaneous Links\n\n- [Edit sfp_a2_info file](https://forum.openwrt.org/t/support-ma5671a-sfp-gpon/48042/25)\n"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-sf.md",
    "content": "---\ntitle: SourcePhotonics Firmware for Huawei MA5671A\nhas_children: false\nredirect_to: /ont-fs-com-gpon-onu-stick-with-mac\nlayout: default\nparent: Huawei MA5671A\n---"
  },
  {
    "path": "_ont/ont-huawei-ma5671a-ymodem.md",
    "content": "---\ntitle: Root Procedure for Huawei MA5671A (flash firmware)\nhas_children: false\nparent: Huawei MA5671A\nlayout: default\n---\n\nThis procedure flashes the firmware on the stick via serial. Some of the firmwares that can be flashed are listed on the [Huawei MA5671A page](/ont-huawei-ma5671a).\n\n{: .text-center .fs-6 }\n<button id=\"flash-start-button\" class=\"btn btn-blue\" data-jtd-toggle=\"modal\" data-jtd-target=\"#flash-modal\">Start flash!</button>\n\n<div id=\"flash-browser-error\" style=\"display:none\">{% include alert.html content=\"This browser is not compatible with the web-root procedure. See the <a href='https://developer.mozilla.org/en-US/docs/Web/API/Web_Serial_API#browser_compatibility'>Browser compatibility</a>\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}</div>\n<noscript>\n{% include alert.html content=\"Your browser does not support JavaScript!\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n</noscript>\n\n{% include ymodem_lantiq.html modelName=\"Huawei MA5671A\" %}\n"
  },
  {
    "path": "_ont/ont-huawei-ma5671a.md",
    "content": "---\ntitle: Huawei MA5671A\nhas_children: true\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n|                 |                                     |\n| --------------- | ----------------------------------- |\n| Vendor/Brand    | Huawei                              |\n| Model           | MA5671A                             |\n| ODM             |                                     |\n| Chipset         | Lantiq PEB98035                     |\n| Flash           | 16 MB                               |\n| RAM             | 64 MB (Winbond W25Q128FV)           |\n| CPU             | MIPS 34Kc interAptiv                |\n| CPU Clock       | 400MHz                              |\n| System          | OpenWRT                             |\n| HSGMII          | Yes                                 |\n| Optics          | SC/APC                              |\n| IP address      | 192.168.1.10                        |\n| Web Gui         | After root                          |\n| SSH             | ✅ user `root`, password `admin123` |\n| Telnet          |                                     |\n| Serial          | ✅ on SFP                           |\n| Serial baud     | 115200                              |\n| Serial encoding | 8-N-1                               |\n| Form Factor     | miniONT SFP                         |\n\n{% include image.html file=\"g-010s-p-and-ma5671a.jpg\"  alt=\"G-010S-P and MA5671A Teardown\" caption=\"G-010S-P and MA5671A Teardown\" %}\n\n\n##  Firmware is interchangeable with:\n\n- [Nokia G-010S-P](/ont-nokia-g-010s-p)\n- [FS.com GPON ONU Stick with MAC / SourcePhotonics SPS-34-24T-HP-TDFO](/ont-fs-com-gpon-onu-stick-with-mac)\n- [Hilink HL23446](/ont-hilink-hl23446)\n- {:.text-red-200 } Dasan H650SFP \n- {:.text-red-200 } DpOptics D23446  \n- {:.text-red-200 } Photonics SPS-34-24T-HP-TDFO\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the SFP connector.\n\n| USB TTL(UART) Adapter | SFP 20pins Molex connector |\n| --------------------- | -------------------------- |\n| 3.3V                  | pin #15 and #16            |\n| TX                    | pin #2                     |\n| RX                    | pin #7                     |\n| GND                   | pin #14 and #10            |\n\n{% include alert.html content=\"Try PIN 10 or other GND PINs if the connection doesn't work by using PIN 14.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## Root procedure\n\n- [Root](/ont-huawei-ma5671a-root)\n\n## List of software versions\n\n- V8R017C00S202B\n\n## List of partitions\n\nPartition layouts change depending on which image is booted, in particular:\n\nWhen booting image0:\n```\nmtd2 ---> image0 (linux)\nmtd5 --> image1\nmtd3 --> rootfs\nmtd4 --> rootfs_data\n```\nWhen booting image0:\n```\nmtd2 ---> image0\nmtd3 --> image1 (linux)\nmtd4 --> rootfs\nmtd5 --> rootfs_data\n```\n\nFor more info [XPONos partition layout](https://github.com/XPONos/linux_lantiq-falcon/commit/456f68f69a84c846a542a9f0ea47c37476535dcb).\n\n\n### When booting from image0\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 00740000 | 00010000  | \"linux\"       |\n| mtd3 | 0061eedc | 00010000  | \"rootfs\"      |\n| mtd4 | 00370000 | 00010000  | \"rootfs_data\" |\n| mtd5 | 00800000 | 00010000  | \"image1\"      |\n\n### When booting from image1\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 00740000 | 00010000  | \"image0\"      |\n| mtd3 | 00800000 | 00010000  | \"linux\"       |\n| mtd4 | 006d8077 | 00010000  | \"rootfs\"      |\n| mtd5 | 00410000 | 00010000  | \"rootfs_data\" |\n\n## List of firmwares and files\n\n{% include alert.html content=\"If the root procedure without tweezers is used, the firmware already on the Huawei Stick corresponds to rooted firmware in this list.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n- [Carlito MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mtd2.bin){: .btn }  md5hash: d3cb6f7efec201b37931139feb4bb23b\n- [Huawei Rooted MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd2.img){: .btn } md5hash: 3138d2dd06a32bb92bc63610fec6fcd6\n- [Carlito MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mtd5.bin){: .btn }  md5hash: 59d2dc15227d6f693a38131eca89b29e \n- [Huawei Rooted MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd5.img){: .btn }  md5hash: 0e4cfdc1b96be6581869b26b48789556\n- [1224abort.bin](https://ma5671a.s3.nl-ams.scw.cloud/1224ABORT.bin){: .btn }  md5hash: 10e94a4b4acdc82dec20c7904b69e5c0\n- [right.com.cn (China) 19 July 2022](https://mega.nz/file/9fpSkYTb#wNyjAj1kOLWC9HozX-gTQ-TS3VFqRYg--x1rm7RSuDg){: .btn } md5hash: 6b5e7e3c659fe3f0204340fa746ac4fc\n- [right.com.cn (China) 29 Aug 2022](https://mega.nz/file/VHFFSBrT#2WhDPcdON5EHR01l6Ut35GC3sl55e4l09Z0NUo_7SWA){: .btn} md5hash: 3d357e2dc7b59c66fe61b4ddf1fb8dc0\n- [right.com.cn (China) 20 Nov 2023](https://mega.nz/file/8vcwyJRA#yuzjyI9Y9vsA0RegGnNOy_JLv2FNRIMfI5JxHn8t0-s){: .btn} md5hash: 4901ae8e70991ca1202bc80db9c151cc\n- [FS.com GPON ONU Stick with MAC firmware / SourcePhotonics SPS-34-24T-HP-TDFO firmware](/ont-fs-com-gpon-onu-stick-with-mac)\n\n# Usage\n\n- [Huawei Rooted Firmware General Setting](/ont-huawei-ma5671a-rooted)\n- [Carlito Firmware General Setting](/ont-huawei-ma5671a-carlito)\n- [SourcePhotonics Firmware General Setting](/ont-huawei-ma5671a-sf)\n- [right.com.cn (China) Firmware General Setting](/ont--huawei-ma5671a-china)\n- [Nokia G-010S-P Firmware General Setting](/ont-nokia-g-010s-p)\n\n# Advanced settings\n\n## Transferring files to the stick\n\n{% include alert.html content=\"If you use a modern OpenSSH version (e.g. >= 8.8) you will have to use the legacy protocol and enable some deprecated algorithms: scp `-oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss [...]`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# scp rootfs.bin root@192.168.1.10:/tmp/\n```\n\n## Backup of all partition\n\nMake a backup of all partitions, an easy way is:\n- On the stick run:\n```sh\ncat /proc/mtd\n```\n\n### Via SCP \n- For each mtdX run in the lantiq shell:\n```sh\ncp /dev/mtdX /tmp\n```\n\n{% include alert.html content=\"If you use a modern OpenSSH version (e.g. >= 8.8) you will have to use the legacy protocol and enable some deprecated algorithms: `scp -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss [...]`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nAnd in the computer shell:\n```sh\nscp root@192.168.1.10:/tmp/mtdX ./\n```\n\n### Via NC\n\n- For each mtdX run, on computer shell:\n```sh\nnc -l -p 1234 > mtdX.bin\n```\nAnd in the lantiq shell:\n```sh\ncat /dev/mtdX | nc 192.168.1.11 1234\n```\n\n## Checking the currently active image\n\n```sh\n# fw_printenv committed_image\n```\n\n## Booting to a different image\n\n```sh\n# fw_setenv committed_image 0|1\n# fw_setenv image0|1_is_valid 1\n```\n\n## Cloning of mtd1 (image 0) into mtd5 (image 1)\n\n{% include alert.html content=\"Image 0 can be flashed to image 1, while image 1 cannot be flashed to image 0 because it has larger rootfs_data\" alert=\"Warning\" icon=\"svg-warning\" color=\"yellow\" %}\n\nThe following commands are used to clone image0 to image1 and then boot to it\n```sh\n# cat /dev/mtd2 > /tmp/mtd2.bin\n# mtd -e image1 write /tmp/mtd2.bin image1\n# fw_setenv committed_image 1\n# fw_setenv image1_is_valid 1\n# reboot\n```\n\n## Flashing a new rootfs via SSH\n\n{% include alert.html content=\"Only the inactive image can be flashed\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nThe following commands are used to flash a new rootfs to image1 and then boot to it\n```sh\n# mtd -e image1 write /tmp/rootfs.bin image1\n# fw_setenv committed_image 1\n# fw_setenv image1_is_valid 1\n# reboot\n```\n\n{% include alert.html content=\"Some OLTs don't like when ONTs don't boot from image 0, therefore the previous procedure must be preceded by the following procedure with inverted images, as to clone image 1 into image 0\" alert=\"Warning\" icon=\"svg-warning\" color=\"yellow\" %}\n\n## Flashing a new rootfs via serial\n\n{% include alert.html content=\"We recommend using the flash web app.\" alert=\"Info\" icon=\"svg-warning\" color=\"yellow\" %}\n\nIf you wish to change the firmware via serial, we recommend using the web app: [Web Serial Flash](/ont-huawei-ma5671a-ymodem)\n\n{% include alert.html content=\"Use this procedure only if you are unable to do the procedure from SSH\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n1. Connecting the molex-serial adapter and the serial to the computer as indicated in [Root Procedure](/ont-huawei-ma5671a-web-root)\n2. Open Tera Term (or any other programme capable of connecting to the serial terminal)\n3. Connect the SFP stick to the SFP molex, from the terminal you will have 5 seconds to lock the bootloader by doing a simple CTRL+C. Now upload the firmware image of the new rootfs partition to the stick with the command\n```\nFALCON => loady 0x80800000\n```\nAt this point it will appear:\n\n{% include image.html file=\"ma5671a-root-13.jpg\" alt=\"shell requiring `mtd2` upload\" caption=\"shell requiring `mtd2` upload\" %}\n\n{:style=\"counter-reset:none\"}\n1. From the teratem menu do `FILE` → `TRANSFER` → `YMODEM` → `SEND` → `[mtd2.bin]`.\nIt will start uploading the file at a speed of about 3-4 KBps. Now you will have to wait more than half an hour for the upload to complete.\n\n1. Once finished, the image loaded on the stick must also be saved to the corresponding system partition (the first of the 2) with the commands\n```\nFALCON => setenv committed_image 0\nFALCON => setenv image0_is_valid 1\nFALCON => saveenv\nFALCON => sf probe 0 && sf erase C0000 740000 && sf write 80800000 C0000 740000 && reset\n```\n\n{% include alert.html content=\"If you need to flash to image 2, you must use the following command `FALCON => sf probe 0 && sf erase 800000 800000 && sf write 80800000 800000 800000 && reset`\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n# EEPROM (I2C slave simulated EEPROM)\nThe Huawei MA5671A does not have a physical EEPROM, the Falcon SOC emulates an EEPROM by exposing it on the I2C interface as required by the SFF-8472 specification.\n\nOn the I2C interface there will be two memories of 256 bytes each at the addresses `1010000X (A0h)` and `1010001X (A2h)`, however in reality the memory available from the emulated EEPROM will be 640 bytes each but only the first 256 bytes will be exposed in the I2C interface.\n\nThe Huawei MA5671A stores the content of the emulated EEPROM in U-Boot env variables to restore it after a reboot:\n\n- `EEPROM0 (A0h)` stored in U-Boot env variable `sfp_a0_low_128`\n- `EEPROM1 (A2h)` stored in U-Boot env variable `sfp_a2_info`\n\n## EEPROM Editing Tool for MA5671A\n\nA simple tool to help edit the EEPROM of the **Huawei MA5671A**, created by **MrFreeZZ**: https://github.com/hack-gpon/MA5671A-Eeprom/releases\n\n✅ Automatically calculates the checksum, making the process easier and safer.\n\n\n## EEPROM0 layout\n\n| address | size | name                              | default value                                                                               | description                                                         |\n| ------- | ---- | --------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |\n|         |      | **BASE ID FIELDS (SFF-8472)**     |                                                                                             |                                                                     |\n| 0       | 1    | Identifier                        | `0x03` (SFP)                                                                                | Type of transceiver                                                 |\n| 1       | 1    | Ext identifier                    | `0x04` (MOD_DEF 4)                                                                          | Additional information about the transceiver                        |\n| 2       | 1    | Connector                         | `0x01` (SC)                                                                                 | Type of media connector                                             |\n| 3-10    | 8    | Transceiver                       | `0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00`                                                   | Code for optical compatibility                                      |\n| 11      | 1    | Encoding                          | `0x03` (NRZ)                                                                                | High speed serial encoding algorithm                                |\n| 12      | 1    | Signaling Rate, Nominal           | `0x0C` (1.244Gbps)                                                                          | Nominal signaling rate                                              |\n| 13      | 1    | Rate Identifier                   | `0x00` (Not used)                                                                           | Type of rate select functionality                                   |\n| 14      | 1    | Length (SMF,km)                   | `0x14` (20 km)                                                                              | Link length supported for single-mode fiber, units of km            |\n| 15      | 1    | Length (SMF)                      | `0xC8` (200 x 100m)                                                                         | Link length supported for single-mode fiber, units of 100 m         |\n| 16      | 1    | Length (50 um, OM2)               | `0x00` (No support)                                                                         | Link length supported for 50 um OM2 fiber, units of 10 m            |\n| 17      | 1    | Length (62.5 um, OM1)             | `0x00` (No support)                                                                         | Link length supported for 62.5 um OM1 fiber, units of 10 m          |\n| 18      | 1    | Length copper cable               | `0x00` (No support)                                                                         | Link length supported for copper or direct attach cable, units of m |\n| 19      | 1    | Length (50 um, OM3)               | `0x00` (No support)                                                                         | Link length supported for 50 um OM3 fiber, units of 10 m            |\n| 20-35   | 16   | Vendor name                       | `0x48 0x55 0x41 0x57 0x45 0x49 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 ` (HUAWEI) | SFP vendor name (ASCII)                                             |\n| 36      | 1    | Transceiver                       | `0x00` (No support)                                                                         | Code for optical compatibility                                      |\n| 37-39   | 3    | Vendor OUI                        | `0x00 0x00 0x00` (No specified)                                                             | SFP vendor IEEE company ID                                          |\n| 40-55   | 16   | Vendor PN                         | `0x4D 0x41 0x35 0x36 0x37 0x31 0x41 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20` (MA5671A) | Part number provided by SFP vendor (ASCII)                          |\n| 56-59   | 4    | Vendor rev                        | `0x30 0x30 0x30 0x30` (0000)                                                                | Revision level for part number provided by vendor (ASCII)           |\n| 60-61   | 2    | Wavelength                        | `0x05 0x1E` (1310nm TX)                                                                     | Laser wavelength                                                    |\n| 62      | 1    | Fibre Channel Speed 2             | `0x00` (No support)                                                                         | Transceiver's Fibre Channel speed capabilities                      |\n| 63      | 1    | CC_BASE                           |                                                                                             | Check code for Base ID Fields (addresses 0 to 62)                   |\n|         |      | **EXTENDED ID FIELDS (SFF-8472)** |                                                                                             |                                                                     |\n| 64-65   | 2    | Options                           | `0x00 0x1A` (TX DISABLE, TX FAULT, RX LOS)                                                  | Indicates which optional transceiver signals are implemented        |\n| 66      | 1    | Signaling Rate, max               | `0x00` (No specified)                                                                       | Upper signaling rate margin, units of %                             |\n| 67      | 1    | Signaling Rate, min               | `0x00` (No specified)                                                                       | Lower signaling rate margin, units of %                             |\n| 68-83   | 16   | Vendor SN                         | Unique in each SFP                                                                          | Serial number provided by vendor (ASCII)                            |\n| 84-91   | 8    | Date code                         | Unique in each SFP                                                                          | Vendor's manufacturing date code                                    |\n| 92      | 1    | Diagnostic Monitoring Type        | `0x68` (Digital diagnostic, Internally calibrated, Received average power type)             | Indicates which type of diagnostic monitoring is implemented        |\n| 93      | 1    | Enhanced Options                  | `0xE0` (Alarm/warning flags, soft TX_DISABLE control, soft TX_FAULT monitoring)             | Indicates which optional enhanced features are implemented          |\n| 94      | 1    | SFF-8472 Compliance               | `0x03` (Rev 10.2 of SFF-8472)                                                               | Indicates which revision of SFF-8472 the transceiver complies with  |\n| 95      | 1    | CC_EXT                            |                                                                                             | Check code for the Extended ID Fields (addresses 64 to 94)          |\n|         |      | **VENDOR SPECIFIC FIELDS**        |                                                                                             |                                                                     |\n| 96-127  | 32   | Vendor data                       | Not sure if it's unique or not                                                              | Vendor specifc data (ASCII)                                         |\n| 128-255 | 128  | Reserved                          | `0x00 0x00 0x00...`                                                                         | Reserved                                                            |\n|         |      | **EXTRA EEPROM FIELDS**           |                                                                                             | **Not exposed to I2C interface**                                    |\n| 256-639 | 384  | Reserved                          | `0x00 0x00 0x00...`                                                                         | Reserved                                                            |\n\n\n## EEPROM1 layout\n\n| address | size | name                              | default value                           | description                                                       |\n| ------- | ---- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------- |\n|         |      | **DIAGNOSTIC AND CONTROL FIELDS** |                                         |                                                                   |\n| 0-1     | 2    | Temp High Alarm                   | `0x5F 0x00` (95℃)                       | Value expressed in two's complement                               |\n| 2-3     | 2    | Temp Low Alarm                    | `0xCE 0x00` (-50℃)                      | Value expressed in two's complement                               |\n| 4-5     | 2    | Temp High Warning                 | `0x5A 0x00` (90℃)                       | Value expressed in two's complement                               |\n| 6-7     | 2    | Temp Low Warning                  | `0xD3 0x00` (-45℃)                      | Value expressed in two's complement                               |\n| 8-9     | 2    | Voltage High Alarm                | `0x8C 0xA0` (3.6V)                      | Value expressed in volt subunits[^subunit]                        |\n| 10-11   | 2    | Voltage Low Alarm                 | `0x75 0x30` (3.0V)                      | Value expressed in volt subunits[^subunit]                        |\n| 12-13   | 2    | Voltage High Warning              | `0x88 0xB8` (3.5V)                      | Value expressed in volt subunits[^subunit]                        |\n| 14-15   | 2    | Voltage Low Warning               | `0x79 0x18` (3.1V)                      | Value expressed in volt subunits[^subunit]                        |\n| 16-17   | 2    | Bias High Alarm                   | `0xAF 0xC8` (90mA)                      | Value expressed in milliampere subunits[^subunit]                 |\n| 18-19   | 2    | Bias Low Alarm                    | `0x00 0x00` (0mA)                       | Value expressed in milliampere subunits[^subunit]                 |\n| 20-21   | 2    | Bias High Warning                 | `0x88 0xB8` (70mA)                      | Value expressed in milliampere subunits[^subunit]                 |\n| 22-23   | 2    | Bias Low Warning                  | `0x00 0x00` (0mA)                       | Value expressed in milliampere subunits[^subunit]                 |\n| 24-25   | 2    | TX Power High Alarm               | `0x9B 0x82` (6dBm)                      | Value expressed in watts subunits[^subunit]                       |\n| 26-27   | 2    | TX Power Low Alarm                | `0x22 0xD0` (-1dBm)                     | Value expressed in watts subunits[^subunit]                       |\n| 28-29   | 2    | TX Power High Warning             | `0x7B 0x86` (5dBm)                      | Value expressed in watts subunits[^subunit]                       |\n| 30-31   | 2    | TX Power Low Warning              | `0x2B 0xD4` (0dBm)                      | Value expressed in watts subunits[^subunit]                       |\n| 32-33   | 2    | RX Power High Alarm               | `0x09 0xCF` (-6dBm)                     | Value expressed in watts subunits[^subunit]                       |\n| 34-35   | 2    | RX Power Low Alarm                | `0x00 0x0D` (-29dBm)                    | Value expressed in watts subunits[^subunit]                       |\n| 36-37   | 2    | RX Power High Warning             | `0x07 0xCB` (-7dBm)                     | Value expressed in watts subunits[^subunit]                       |\n| 38-39   | 2    | RX Power Low Warning              | `0x00 0x10` (-28dBm)                    | Value expressed in watts subunits[^subunit]                       |\n| 40-45   | 6    | MAC address                       | Unique in each SFP                      | Contains the mac address of the SFP, it could also be empty       |\n| 46-55   | 10   | Reserved                          | `0x00 0x00 0x00...`                     | Reserved                                                          |\n| 56-59   | 4    | RX_PWR(4) Calibration             | `0x00 0x00 0x00 0x00`                   | 4th order RSSI calibration coefficient                            |\n| 60-63   | 4    | RX_PWR(3) Calibration             | `0x00 0x00 0x00 0x00`                   | 3rd order RSSI calibration coefficient                            |\n| 64-67   | 4    | RX_PWR(2) Calibration             | `0x00 0x00 0x00 0x00`                   | 2nd order RSSI calibration coefficient                            |\n| 68-71   | 4    | RX_PWR(1) Calibration             | `0x3F 0x80 0x00 0x00`                   | 1st order RSSI calibration coefficient                            |\n| 72-75   | 4    | RX_PWR(0) Calibration             | `0x00 0x00 0x00 0x00`                   | 0th order RSSI calibration coefficient                            |\n| 76-77   | 2    | TX_I(Slope) Calibration           | `0x01 0x00`                             | Slope for Bias calibration                                        |\n| 78-79   | 2    | TX_I(Offset) Calibration          | `0x00 0x00`                             | Offset for Bias calibration                                       |\n| 80-81   | 2    | TX_PWR(Slope) Calibration         | `0x01 0x00`                             | Slope for TX Power calibration                                    |\n| 82-83   | 2    | TX_PWR(Offset) Calibration        | `0x00 0x00`                             | Offset for TX Power calibration                                   |\n| 84-85   | 2    | T(Slope) Calibration              | `0x01 0x00`                             | Slope for Temperature calibration                                 |\n| 86-87   | 2    | T(Offset) Calibration             | `0x00 0x00`                             | Offset for Temperature calibration, in units of 256ths °C         |\n| 88-89   | 2    | V(Slope) Calibration              | `0x01 0x00`                             | Slope for VCC calibration                                         |\n| 90-91   | 2    | V(Offset) Calibration             | `0x00 0x00`                             | Offset for VCC calibration                                        |\n| 92-94   | 3    | Reserved                          | `0x00 0x00 0x00`                        | Reserved                                                          |\n| 95      | 1    | CC_DMI                            |                                         | Check code for Base Diagnostic Fields (addresses 0 to 94)         |\n| 96      | 1    | Temperature MSB                   |                                         | Internally measured module temperature                            |\n| 97      | 1    | Temperature LSB                   |                                         |                                                                   |\n| 98      | 1    | Vcc MSB                           |                                         | Internally measured supply voltage in transceiver                 |\n| 99      | 1    | Vcc LSB                           |                                         |                                                                   |\n| 100     | 1    | TX Bias MSB                       |                                         | Internally measured TX Bias Current                               |\n| 101     | 1    | TX Bias LSB                       |                                         |                                                                   |\n| 102     | 1    | TX Power MSB                      |                                         | Measured TX output power                                          |\n| 103     | 1    | TX Power LSB                      |                                         |                                                                   |\n| 104     | 1    | RX Power MSB                      |                                         | Measured RX input power                                           |\n| 105     | 1    | RX Power LSB                      |                                         |                                                                   |\n| 106-109 | 4    | Optional Diagnostics              | `0xFF 0xFF 0xFF 0xFF` (No support)      | Monitor Data for Optional Laser temperature and TEC current       |\n| 110     | 1    | Status/Control                    | `0x00` (No support)                     | Optional Status and Control Bits                                  |\n| 111     | 1    | Reserved                          | `0x00`                                  | Reserved                                                          |\n| 112-113 | 2    | Alarm Flags                       | Supported                               | Diagnostic Alarm Flag Status Bits                                 |\n| 114     | 1    | Tx Input EQ control               | `0xFF` (No support)                     | Tx Input equalization level control                               |\n| 115     | 1    | Rx Out Emphasis control           | `0xFF` (No support)                     | Rx Output emphasis level control                                  |\n| 116-117 | 2    | Warning Flags                     | Supported                               | Diagnostic Warning Flag Status Bits                               |\n| 118-119 | 2    | Ext Status/Control                | `0x00 0x00` (No support)                | Extended module control and status bytes                          |\n|         |      | **GENERAL USE FIELDS**            |                                         |                                                                   |\n| 120-126 | 7    | Vendor Specific                   | `0x70 0x00 0x00 0x00 0x00 0x00 0x00`    | Vendor specific memory addresses                                  |\n| 127     | 1    | Table Select                      | `0x00`                                  | Optional Page Select                                              |\n|         |      | **USER WRITABLE EEPROM**          |                                         |                                                                   |\n| 128-190 | 63   | Reserved                          | `0xFF 0xFF 0xFF...`                     | Reserved                                                          |\n| 191-214 | 24   | GPON LOID or PLOAM                | Depends on the configuration of the SFP | GPON Logical ONU ID or PLOAM, depends on `GPON LOID/PLOAM switch` |\n| 215-231 | 17   | GPON LPWD                         | Depends on the configuration of the SFP | GPON Logical Password                                             |\n| 232     | 1    | GPON LOID/PLOAM switch            | Depends on the configuration of the SFP | `0x01` to enable LOID, `0x02` to enable PLOAM                     |\n| 233-240 | 8    | GPON SN                           | Unique in each SFP                      | GPON Serial Number (ME 256)                                       |\n| 241-247 | 7    | Reserved                          | `0xFF 0xFF 0xFF...`                     | Reserved                                                          |\n| 248-255 | 8    | Vendor Control                    | `0xFF 0xFF 0xFF...` (Not used)          | Vendor specific control functions                                 |\n|         |      | **EXTRA EEPROM FIELDS**           |                                         | **Not exposed to I2C interface**                                  |\n| 256-511 | 256  | Unknown vendor specific           |                                         | Probably not used in current SFPs                                 |\n| 512-531 | 20   | GPON Equipment ID                 |                                         | GPON Equipment ID (ME 257), may not work in some firmwares        |\n| 532-535 | 4    | GPON Vendor ID                    |                                         | GPON Vendor ID (ME 256 and more), may not work in some firmware   |\n| 536-639 | 104  | Reserved                          |                                         | Reserved                                                          |\n\n{% include alert.html content=\"For more information, see the SFF-8472 Rev 10.2 specification.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n\n# Miscellaneous Links\n\n- [Support MA5671A SFP GPON - OpenWRT forum](https://forum.openwrt.org/t/support-ma5671a-sfp-gpon/48042)\n- [u boot lantiq falcon - GitHub](https://github.com/minhng99/u-boot_lantiq_falcon)\n- [Custom Firmware - right.com.cn](https://www.right.com.cn/forum/thread-8220173-1-1.html)\n- [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)\n- [GPON SFP Tools](https://github.com/MokkaSchnalle/GPON-SFP-Tools)\n- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)\n- [La fibre Orange à 2Gbps, sur un routeur MikroTik 10Gbps CCR2004, via un ONT SFP+](https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps/msg832904/#msg832904)\n- [Bypassing the HH3K up to 2.5Gbps using a BCM57810S NIC](https://www.dslreports.com/forum/r32230041-Internet-Bypassing-the-HH3K-up-to-2-5Gbps-using-a-BCM57810S-NIC)\n- [General setting of lantiq](https://forum.fibra.click/d/23881-ma5671a-e-vodafone-25-gbps/64)\n- [HUAWEI MA5671A SFP module](https://github.com/nikbyte/huawei_ma5671a)\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n- [Tech Info Depot Wiki](http://en.techinfodepot.shoutwiki.com/wiki/Huawei_MA5671A)\n\n---\n\n[^subunit]: The subunit are 10000 times smaller than the specified unit\n"
  },
  {
    "path": "_ont/ont-huawei-useful-command.md",
    "content": "## Enabling telnet\n\nWe need access to a specific shell and in order to get it enabling telnet is required. On the ONT, the telnet server accepts connections but doesn't read any input, nor does it send anything.\n\nTo enable telnet the configuration backup/restore web UI page will be used. The configuration can be downloaded as an XML, which contains a lot more options than the web interface and a couple of them can be modified to enable telnet access: under the `X_HW_CLITelnetAccess` node, set the `Access` attribute to `1` and, in `AclServices`, `TELNETLanEnable` should also be set to `1`. Both might have to be set but your mileage may vary.\n\nIt is possible that this won't work/has been fixed in more recent versions.\n\nNow that this is done, the modified configuration file can be uploaded via the web interface, the ONT will restart and telnet should be accessible on port 23.\n\n{% include alert.html content=\"All results need to be converted from HEX to ASCII. You can use our [Converter](/ascii-hex), taking care to add 0x in front and remove the spaces every 8 hex digits.\" alert=\"Warning\" icon=\"svg-info\" color=\"blue\" %}\n\n# GPON ONU status\n\n## Getting information on the OLT vendor\n\n```\nWAP>omcicmd mib show meid 131 instid 0\n\n  -------------------------------------------------------\n  Me(OLT-G), instance(0x0), instance size is 54\n  -------------------------------------------------------\n  Att1, AttSize = 0x4, AttContent: 48575443\n  Att2, AttSize = 0x14, AttContent: 00000000 00000000 00000000 00000000 00000000\n  Att3, AttSize = 0xe, AttContent: 31300000 00000000 00000000 0000\n  Att4, AttSize = 0xe, AttContent: 00000000 00000000 00000000 0000\n  -------------------------------------------------------\n\nsuccess!\n```\n*0x48575443* → *HWTC* (Huawei)\n\n# GPON/OMCI settings\n\n## Getting OMCI software version (ME 7)\n\n```\nWAP>omcicmd mib show meid 7 instid 0\n\n  -------------------------------------------------------\n  Me(Software Image), instance(0x0), instance size is 19\n  -------------------------------------------------------\n  Att1, AttSize = 0xe, AttContent: 56355230 32304331 30533131 3500\n  Att2, AttSize = 0x1, AttContent: 00\n  Att3, AttSize = 0x1, AttContent: 00\n  Att4, AttSize = 0x1, AttContent: 01\n  -------------------------------------------------------\n\nsuccess!\nWAP>omcicmd mib show meid 7 instid 1\n\n  -------------------------------------------------------\n  Me(Software Image), instance(0x1), instance size is 19\n  -------------------------------------------------------\n  Att1, AttSize = 0xe, AttContent: 56355230 32304331 30533131 3500\n  Att2, AttSize = 0x1, AttContent: 01\n  Att3, AttSize = 0x1, AttContent: 01\n  Att4, AttSize = 0x1, AttContent: 01\n  -------------------------------------------------------\n\nsuccess!\n```\n*0x56355230 32304331 30533131 3500* → *V5R020C10S115*\n\n## Getting OMCI hardware version and vendor ID (ME 256)\n\n```\nWAP>omcicmd mib show meid 256 instid 0\n\n  -------------------------------------------------------\n  Me(ONT-G), instance(0x0), instance size is 73\n  -------------------------------------------------------\n  Att1, AttSize = 0x4, AttContent: 48575443\n  Att2, AttSize = 0xe, AttContent: 32343046 2e410000 00000000 0000\n  Att3, AttSize = 0x8, AttContent: 2a2a2a2a 2a2a2a2a\n  Att4, AttSize = 0x1, AttContent: 00\n  Att5, AttSize = 0x1, AttContent: 00\n  Att6, AttSize = 0x1, AttContent: 00\n  Att7, AttSize = 0x1, AttContent: 00\n  Att8, AttSize = 0x1, AttContent: 00\n  Att9, AttSize = 0x1, AttContent: 00\n  Att10, AttSize = 0x18, AttContent: 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a\n  Att11, AttSize = 0xc, AttContent: 2a2a2a2a 2a2a2a2a 2a2a2a2a\n  Att12, AttSize = 0x1, AttContent: 00\n  Att13, AttSize = 0x2, AttContent: 0001\n  -------------------------------------------------------\n\nsuccess!\n```\n\n*0x48575443* → *HWTC*\n*0x32343046 2e41* → *240F.A*\n\n## Getting OMCI equipment ID (ME 257)\n\n```\nWAP>omcicmd mib show meid 257 instid 0\n\n  -------------------------------------------------------\n  Me(ONT2-G), instance(0x0), instance size is 44\n  -------------------------------------------------------\n  Att1, AttSize = 0x14, AttContent: 48473830 31304876 36000000 00000000 00000000\n  Att2, AttSize = 0x1, AttContent: b0\n  Att3, AttSize = 0x2, AttContent: 0240\n  Att4, AttSize = 0x1, AttContent: 01\n  Att5, AttSize = 0x1, AttContent: 01\n  Att6, AttSize = 0x2, AttContent: 0040\n  Att7, AttSize = 0x1, AttContent: 02\n  Att8, AttSize = 0x1, AttContent: 01\n  Att9, AttSize = 0x2, AttContent: 0020\n  Att10, AttSize = 0x4, AttContent: 00000000\n  Att11, AttSize = 0x2, AttContent: 007d\n  Att12, AttSize = 0x1, AttContent: 00\n  Att13, AttSize = 0x2, AttContent: 0018\n  Att14, AttSize = 0x2, AttContent: 0001\n  -------------------------------------------------------\n\nsuccess!\n```\n\n*0x48473830 31304876 36* → *HG8010Hv6*\n\n"
  },
  {
    "path": "_ont/ont-huawei.md",
    "content": "---\ntitle: Huawei\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-kaon-pg1892g.md",
    "content": "---\ntitle: KAON PG1892G\nhas_children: false\nlayout: default\nparent: KAON\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | KAON                             |\n| Model           | PG1892G                          |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [KCOM Full Fibre](https://www.kcom.com/)\n"
  },
  {
    "path": "_ont/ont-kaon.md",
    "content": "---\ntitle: KAON\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-leox-lxt-010g-d.md",
    "content": "---\ntitle: LEOX LXT-010G-D\nhas_children: false\nlayout: default\nparent: LEOX\n---\n\n# Hardware Specifications\n\n|                 |                                      |\n| --------------- | ------------------------------------ |\n| Vendor/Brand    | LEOX                                 |\n| Model           | LXT-010G-D                           |\n| Chipset         | Realtek RTL9601D                     |\n| Flash           | SPI NOR 16MB                         |\n| RAM             | 32MB                                 |\n| System          | Linux 3.18 (Luna SDK 3.3)            |\n| 2.5GBaseT       | No                                   |\n| Optics          | Bosa on Board (BoB)                  |\n| IP address      | 192.168.100.1/24                     |\n| Web Gui         | yes                                  |\n| SSH             |                                      |\n| Telnet          | ✅ user `leox`, password `leolabs_7` |\n| Serial          | ✅                                   |\n| Serial baud     | 115200                               |\n| Serial encoding | 8-N-1                                |\n| Form Factor     | ONT                                  |\n\n# Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface.\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    ploam='ascii'\n    flash='/etc/scripts/flash'\n    customSwVersionAlert='This needs the `OMCI_OLT_MODE` value to be set to `21`. This will force the stick to use your own settings from the XML file, but this is a hack and causes sigsegv of `/bin/checkomci`.'\n    omciOLT21='true'\n%}\n"
  },
  {
    "path": "_ont/ont-leox-lxt-010h-d.md",
    "content": "---\ntitle: LEOX LXT-010H-D\nhas_children: false\nlayout: default\nparent: LEOX\n---\n\n# Hardware Specifications\n\n|                 |                                                                        |\n| --------------- | ---------------------------------------------------------------------- |\n| Vendor/Brand    | LEOX                                                                   |\n| Model           | LXT-010H-D                                                             |\n| Chipset         | Realtek RTL9601D                                                       |\n| Flash           | SPI NOR 16MB                                                           |\n| RAM             | 32MB                                                                   |\n| System          | Linux 3.18 (Luna SDK 3.3)                                              |\n| 2.5GBaseT       | Yes                                                                    |\n| PHY Ethernet    | RTL8221B                                                               |\n| Optics          | SC/APC                                                                 |\n| IP address      | 192.168.100.1/24                                                       |\n| Web Gui         | yes, same logins as Telnet                                             |\n| SSH             |                                                                        |\n| Telnet          | ✅ user `leox`, password `leolabs_7` OR user `adsl`, password `realtek` |\n| Serial          | ✅                                                                      |\n| Serial baud     | 115200                                                                 |\n| Serial encoding | 8-N-1                                                                  |\n| Form Factor     | ONT                                                                    |\n\n# External Photos\n\n{% include image.html file=\"ont-leox-lxt-010-h-d_top.jpg\" alt=\"Leox LXT-010H-D Top\" caption=\"Leox LXT-010H-D Top\" %} \n{% include image.html file=\"ont-leox-lxt-010-h-d_bottom.jpg\" alt=\"Leox LXT-010H-D Bottom\" caption=\"Leox LXT-010H-D Bottom\" %}\n\n# Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface (see red square).\n\n{% include image.html file=\"ont-leox-lxt-010-h-d_ttl.jpg\" alt=\"Leox LXT-010H-D TTL Pinout\" caption=\"Leox LXT-010H-D TTL Pinout\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of partitions\n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"boot\"          |\n| mtd1  | 00002000 | 00001000  | \"env\"           |\n| mtd2  | 00002000 | 00001000  | \"env2\"          |\n| mtd3  | 0003c000 | 00001000  | \"config\"        |\n| mtd4  | 00300000 | 00001000  | \"k0\"            |\n| mtd5  | 004c0000 | 00001000  | \"r0\"            |\n| mtd6  | 00300000 | 00001000  | \"k1\"            |\n| mtd7  | 004c0000 | 00001000  | \"r1\"            |\n| mtd8  | 00001000 | 00001000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00001000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00001000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00001000  | \"Partition_011\" |\n| mtd12 | 00300000 | 00001000  | \"linux\"         |\n| mtd13 | 004c0000 | 00001000  | \"rootfs\"        |\n\nThis ONT supports dual boot. \n\n`k0` and `r0` respectively contain kernel and firmware of the first image, while `k1` and `r1` contain kernel and firmware of the second one.\n\n## List firmware version\n\n- V3.3.2L6\n- V3.3.2L7\n- V3.3.2L8\n- V3.3.2L8V ([Veip](/pptp_veip/) firmware)\n- V3.3.2L9\n- V3.3.2L10 (Build date: 2025-02-24 15:50:43)\n- V3.3.2L10V (Build date: 2025-02-24 14:54:15 [Veip](/pptp_veip/) firmware)\n\n{% include alert.html content=\"Before proceeding with any modification, make a backup of files rtl8290b.data and europa.data from /var/config folder. These files include optical calibration of your ONT's laser, if you accidentally delete or ruin them, your ONT will be unusable\" alert=\"Note\" icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    ploam='ascii'\n    flash='/etc/scripts/flash'\n    customSwVersionAlert='This needs the `OMCI_OLT_MODE` value to be set to `21`. This will force the stick to use your own settings from the XML file, but this is a hack and causes sigsegv of `/bin/checkomci`.'\n    omciOLT21='true'\n%}\n\n\n"
  },
  {
    "path": "_ont/ont-leox-lxt-010s-h.md",
    "content": "---\ntitle: LEOX LXT-010S-H\nhas_children: false\nlayout: default\nparent: LEOX\n---\n\n# Hardware Specifications\n\n|                  |                                         |\n| ---------------- | --------------------------------------- |\n| Vendor/Brand     | LEOX                                    |\n| Model            | LXT-010S-H                              |\n| ODM              | HiSense                                 |\n| ODM Product Code | [LTE3415-SH+](/ont-hisense-lte3415-sh+) |\n| Chipset          | Realtek RTL9601CI                       |\n| Flash            | 128MB                                   |\n| RAM              | 32MB                                    |\n| System           | Linux 3.18 (Luna SDK 3.3)               |\n| HSGMII           | Yes                                     |\n| Optics           | SC/UPC or SC/APC                        |\n| IP address       | 192.168.100.1/24                        |\n| Web Gui          | ✅                                      |\n| SSH              |                                         |\n| Telnet           | ✅ user `leox`, password `leolabs_7`    |\n| Serial           | ✅                                      |\n| Serial baud      | 115200                                  |\n| Serial encoding  | 8-N-1                                   |\n| Form Factor      | miniONT SFP                             |\n\n\n## List of partitions\n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"boot\"          |\n| mtd1  | 00002000 | 00001000  | \"env\"           |\n| mtd2  | 00002000 | 00001000  | \"env2\"          |\n| mtd3  | 0003c000 | 00001000  | \"config\"        |\n| mtd4  | 00300000 | 00001000  | \"k0\"            |\n| mtd5  | 004c0000 | 00001000  | \"r0\"            |\n| mtd6  | 00300000 | 00001000  | \"k1\"            |\n| mtd7  | 004c0000 | 00001000  | \"r1\"            |\n| mtd8  | 00001000 | 00001000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00001000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00001000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00001000  | \"Partition_011\" |\n| mtd12 | 00300000 | 00001000  | \"linux\"         |\n| mtd13 | 004c0000 | 00001000  | \"rootfs\"        |\n\nThis stick supports dual boot. \n\n`k0` and `r0` respectively contain kernel and firmware of the first image, while `k1` and `r1` contain kernel and firmware of the second one.\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the stick's shield:\n\n{% include image.html file=\"ont-leox-lxt-010s-h_ttl.jpg\" alt=\"Leox LXT-010S-H TTL Pinout\" caption=\"Leox LXT-010S-H TTL Pinout\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List firmware version\n\n{% include alert.html content=\"There is a new firmware provided by LeoLabs that fixes issues with the stick operating at 2.5GbE speeds\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n- V3.3.4L3\n- V3.3.4L4rc1 (Fix 2.5GbE HiSGMII)\n- V3.3.4L4rc5\n- V3.3.4L4 (Added failover from 2.5GbE to 1GbE, other fixes)\n- V3.3.4L4V (Same as V3.3.4L4 but should be used for VEIP profiles)\n- V3.3.4L5rc1 - This version adds \"auto-negotiation\" capability to the stick. It always prefers 1G (to keep the stick consistently accessible). When you force the link to 2.5G (disabling auto-negotiation), it takes at least 40 seconds to establish the connection.\n- V3.3.4L5V (Build date: 2024-02-26 14:05:05 VEIP firmware)\n- V3.3.4L6 (Build date: 2024-06-27 16:43:48)\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    ploam='ascii'\n    speedLan='18'\n    customSpeedLanAlert='Firmware version `V3.3.4L4rc1` or higher is required. Before editing the speed make sure your hardware supports it. If you try to use any mode not listed here, the stick will default to mode 1.'\n    flash='/etc/scripts/flash'\n    customSwVersionAlert='This needs the `OMCI_OLT_MODE` value to be set to `21`. This will force the stick to use your own settings from the XML file, but this is a hack and causes sigsegv of `/bin/checkomci`.'\n    omciOLT21='true' %}\n\n# Known Bugs\n\nThe stock firmware doesn't work at 2.5GbE. There is a new firmware provided by LeoLabs that fixes this issue.\nSometimes, when connecting to a Huawei OLT and cloning another ONT using GPON_SN, the Leox ONT will report O5 status but won't actually get a proper connection. Workaround - set PON_VENDOR_ID to HWTC. \n"
  },
  {
    "path": "_ont/ont-leox-lxt-240g-c1.md",
    "content": "---\ntitle: LEOX LXT-240G-C1\nhas_children: false\nlayout: default\nparent: LEOX\n---\n\n# Hardware Specifications\n\n|                 |                                                                        |\n| --------------- | ---------------------------------------------------------------------- |\n| Vendor/Brand    | LEOX                                                                   |\n| Model           | LXT-240G-C1                                                            |\n| Chipset         | Realtek RTL9607C                                                       |\n| Flash           | SPI NAND 256MB                                                         |\n| RAM             | 196MB visible in top (256MB total?)                                    |\n| CPU             | Formosa MIPS interAptiv (multi) V2.0                                   |\n| CPU Clock       | 300MHz (597.60 BogoMIPS)                                               |\n| System          | Linux 4.4.140 (GCC Realtek MSDK-4.8.5p1 Build 3068)                    |\n| Ethernet ports  | 4x1G                                                                   |\n| POTS ports      | 2xRJ11                                                                 |\n| Optics          | SC/APC                                                                 |\n| IP address      | 192.168.1.1/24                                                         |\n| Web Gui         | ✅ user `admin`, password `letmein` OR user `user`, password `user`    |\n| Telnet          | ✅ user `leox`, password `leolabs_7`                                   |\n| SSH             | NO                                                                     |\n| Form Factor     | ONT                                                                    |\n\n# External Photos\n\n{% include image.html file=\"ont-leox-lxt-240g-c1_top.jpg\" alt=\"Leox LXT-240G-C1 Top\" caption=\"Leox LXT-240G-C1 Top\" %} \n{% include image.html file=\"ont-leox-lxt-240g-c1_bottom.jpg\" alt=\"Leox LXT-240G-C1 Bottom\" caption=\"Leox LXT-240G-C1 Bottom\" %}\n{% include image.html file=\"ont-leox-lxt-240g-c1_pcb.jpg\" alt=\"Leox LXT-240G-C1 PCB\" caption=\"Leox LXT-240G-C1 PCB\" %}\n\n## List of partitions (MTD)\n\n| dev   | size     | erasesize | name             |\n| ----- | -------- | --------- | ---------------- |\n| mtd0  | 000c0000 | 00020000  | \"boot\"           |\n| mtd1  | 00020000 | 00020000  | \"env\"            |\n| mtd2  | 00020000 | 00020000  | \"env2\"           |\n| mtd3  | 00040000 | 00020000  | \"static_conf\"    |\n| mtd4  | 0f9c0000 | 00020000  | \"ubi_device\"     |\n| mtd5  | 00a89000 | 0001f000  | \"ubi_Config\"     |\n| mtd6  | 00a0d000 | 0001f000  | \"ubi_k0\"         |\n| mtd7  | 01911000 | 0001f000  | \"ubi_r0\"         |\n| mtd8  | 00a0d000 | 0001f000  | \"ubi_k1\"         |\n| mtd9  | 01911000 | 0001f000  | \"ubi_r1\"         |\n| mtd10 | 0081d000 | 0001f000  | \"ubi_framework1\" |\n| mtd11 | 0081d000 | 0001f000  | \"ubi_framework2\" |\n| mtd12 | 02416000 | 0001f000  | \"ubi_apps\"       |\n\nOnly the first 4 partitions with erasesize 0x20000 should be manipulated using mtd devices, the fifth partition `ubi_device` contains the rest of the NAND and is to be manipulated using ubi volumes\n\n## List of volumes (UBI)\n\n| dev    | size      | type    | name             |\n| ------ | --------- | ------- | ---------------- |\n| ubi0_0 | 11046912B | dynamic | \"ubi_Config\"     |\n| ubi0_1 | 10539008B | dynamic | \"ubi_k0\"         |\n| ubi0_2 | 26284032B | dynamic | \"ubi_r0\"         |\n| ubi0_3 | 10539008B | dynamic | \"ubi_k1\"         |\n| ubi0_4 | 26284032B | dynamic | \"ubi_r1\"         |\n| ubi0_5 |  8507392B | dynamic | \"ubi_framework1\" |\n| ubi0_6 |  8507392B | dynamic | \"ubi_framework2\" |\n| ubi0_7 | 37838848B | dynamic | \"ubi_apps\"       |\n\nTo back up a volume, `cat` or `dd` the appropriate `/dev/ubi0_X` device to a file or pipe, to restore a volume, use the `ubiupdatevol` utility (or just do it safely via the WebGUI)\n\nThis ONT supports dual boot.\n\nVolumes `ubi_k0` and `ubi_r0` respectively contain kernel and rootfs of the first image, while `ubi_k1` and `ubi_r1` contain kernel and rootfs of the second one.\n\n## List of software versions\n\n- [V4.1.1L5rc2](https://mega.nz/file/YJkEGCIC#FNdE6Xt6lsFJdOnx3GGGCNi4fpMoN0QFOf5_1VjcGHo){: .btn } md5hash: 53b80abbda413e3ebc87d1730292d2fd\n- [V4.1.1L5](https://mega.nz/file/VMtTkLDI#5tZ74mAAqn0PhGa4MtbEliSo4B0VwIo28K_8iV2AzQ0){: .btn } md5hash: 5426cac6eb204ec1b3a8f39bc22d9488, same as rc2 just marked final\n\n# GPON/OMCI settings\n\n## Set OMCI mode to customized so versions don't reset\n```\nmib set OMCI_OLT_MODE 3\n```\n\n## Setting OMCI software version (ME 7)\n```\nmib set OMCI_SW_VER1 YOURSWVER\nmib set OMCI_SW_VER2 YOURSWVER\n```\n\n## Setting OMCI vendor ID (ME 256)\n```\nflash set PON_VENDOR_ID VEND\n```\n\n## Setting ONU GPON Serial Number\n```\nflash set GPON_SN VEND1234ABCD\n```\n\n## Setting OMCI hardware version (ME 256)\n```\nflash set HW_HWVER YOURHWVER\n```\n\n## Setting OMCC version (ME 257)\n```\nmib set OMCC_VER 0x86\n```\n\n## Setting OMCI equipment ID (ME 257)\n```\nflash set GPON_ONU_MODEL YOUREQUIPMENTID\n```\n\n## Setting Product Code (ME 257)\n```\nmib set OMCI_VENDOR_PRODUCT_CODE 0x3032\n```\n\n## Setting VEIP slot ID (example for 0xe01)\n```\nmib set OMCI_VEIP_SLOT_ID 0xe\n```\n\n# Verification commands for settings changed above (all settings take a reboot to apply)\n\n## Verify SwVer (ME 7)\n```\nomcicli mib get 7\n```\n\n## Verify Vendor ID, HwVer, and G984 Serial (ME 256)\n```\nomcicli mib get 256\n```\n\n## Verify OMCC version, Equipment ID and Product Code (ME 257)\n```\nomcicli mib get 257\n```\n\n## Verify VEIP customized slot ID (ME 329)\n```\nomcicli mib get 329\n```\n\n# Advanced settings\n\n## Setting management IP\n```\nmib set LAN_IP_ADDR 192.168.102.1\n```"
  },
  {
    "path": "_ont/ont-leox.md",
    "content": "---\ntitle: LEOX\nhas_children: true\nlayout: default\n---\n\n\n"
  },
  {
    "path": "_ont/ont-luna-sdk-useful-commands.md",
    "content": "# Useful files and binaries\n\n## Useful files\n- `/var/config/lastgood.xml` - Contains the user portion of the configuration\n{% if include.lastgoodHs %}\n- `/var/config/lastgood-hs.xml` - Contains the \"hardware\" configuration (which _should not_ be changed)\n{% endif %}\n- `/tmp/omcilog` - OMCI messages logs (must be enabeled, see below)\n\n## Useful binaries\n- `{{ include.flash }}` - Used to manipulate the config files in a somewhat safe manner\n- `xmlconfig` - Used for low-level manipulation of the XML config files. Called by `{{ include.flash }}`\n- `nv` - Used to manipulate nvram storage, including persistent config entries via `nv setenv`/`nv getenv`\n- `omcicli` - Used to interact with the running OMCI daemon\n- `omci_app` - The OMCI daemon\n- `diag` - Used to run low-level diagnostics commands on the stick\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\n```sh\ndiag gpon get onu-state\n```\n\n## Querying a particular OMCI ME\n```sh\n# omcicli mib get MIB_IDX\n```\n\n\n{% if include.speedLan %}\n\n## Getting/Setting Speed LAN Mode\n{% assign customSpeedLanAlert = include.customSpeedLanAlert | default: \"Before editing the speed make sure your hardware supports it.\" %}\n{% include alert.html content=customSpeedLanAlert alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\nTo change the link mode use this command:\n\n```sh\n# {{ include.flash }} get LAN_SDS_MODE\nLAN_SDS_MODE=0\n# {{ include.flash }} set LAN_SDS_MODE 1\n```\n\n| Value | `cat /proc/kmsg`                     | Mode     | Behavior                    |\n| ----- | ------------------------------------ | -------- | --------------------------- |{% if include.speedLan contains '0' %}\n| 0     | `<4>change mode to 0(GE/FE PHY)`     | `TP`     | 1GbaseT/100baseT            |{% endif %}{% if include.speedLan contains '1' %}\n| 1     | `<4>change mode to 1(Fiber 1G)`      | `FIBER`  | 1GbaseX with auto-neg on    |{% endif %}{% if include.speedLan contains '2' %}\n| 2     | `<4>change mode to 2(SGMII PHY)`     | `TP MII` | 1Gb PHY                     |{% endif %}{% if include.speedLan contains '3' %}\n| 3     | `<4>change mode to 3(SGMII MAC)`     | `MII`    | 1Gb MAC                     |{% endif %}{% if include.speedLan contains '4' %}\n| 4     | `<4>change mode to 4(HiSGMII PHY)`   | `TP MII` | 2.5Gb PHY                   |{% endif %}{% if include.speedLan contains '5' %}\n| 5     | `<4>change mode to 5(HiSGMII MAC)`   | `MII`    | 2.5Gb MAC                   |{% endif %}{% if include.speedLan contains '6' %}\n| 6     | `<4>change mode to 6(2500BaseX)`     | `FIBER`  | 2500baseX with auto-neg on  |{% endif %}{% if include.speedLan contains '7' %}\n| 7     | `<4>change mode to 7(SGMII Force)`   | `TP`     | 1GbaseT with auto-neg off   |{% endif %}{% if include.speedLan contains '8' %}\n| 8     | `<4>change mode to 8(HISGMII Force)` | `TP`     | 2500baseT with auto-neg off |{% endif %}\n\n{% endif %}\n\n# GPON/OMCI settings\n\n## Getting/Setting ONU GPON Serial Number\n```sh\n# {{ include.flash }} get GPON_SN\nGPON_SN=TMBB00000000\n# {{ include.flash }} set GPON_SN TMBB0A1B2C3D\n```\n\n## Getting/Setting ONU GPON PLOAM password\n{% if include.ploam == 'asciiAndHex' %}\n\n{% include alert.html content=\"The PLOAM password can be saved in either ASCII or HEX format, without any 0x or separators\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# {{ include.flash }} get GPON_PLOAM_PASSWD\nGPON_PLOAM_PASSWD=AAAAAAAAAA\n# {{ include.flash }} set GPON_PLOAM_PASSWD AAAAAAAAAA\n# {{ include.flash }} set GPON_PLOAM_PASSWD 41414141414141414141\n```\n\n{% elsif include.ploam == 'hex' %}\n\n{% include alert.html content=\"The PLOAM password is stored in HEX format, without any 0x or separators\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# {{ include.flash }} get GPON_PLOAM_PASSWD\nGPON_PLOAM_PASSWD=41414141414141414141\n# {{ include.flash }} set GPON_PLOAM_PASSWD 41414141414141414141\n```\n{% elsif include.ploam == 'ascii' %}\n\n{% include alert.html content=\"The PLOAM password is stored in ASCII format\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# {{ include.flash }} get GPON_PLOAM_PASSWD\nGPON_PLOAM_PASSWD=AAAAAAAAAA\n# {{ include.flash }} set GPON_PLOAM_PASSWD AAAAAAAAAA\n```\n{% endif %}\n\n## Getting/Setting OMCI software version (ME 7)\n\n{% if include.customSwVersionAlert %}\n\n{% assign customSwVersionAlert = include.customSwVersionAlert %}\n{% include alert.html content=customSwVersionAlert alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n{% endif %}\n\n{% if include.flashSwVersion %}\n```sh\n# {{ include.flash }} get OMCI_SW_VER1\nOMCI_SW_VER1=YOURFIRSTSWVER\n# {{ include.flash }} set OMCI_SW_VER1 YOURFIRSTSWVER\n# {{ include.flash }} get OMCI_SW_VER2\nOMCI_SW_VER1=YOURSECONDSWVER\n# {{ include.flash }} set OMCI_SW_VER2 YOURSECONDSWVER\n```\n{% else %}\n```sh\n# nv setenv sw_custom_version0 YOURFIRSTSWVER\n# nv setenv sw_custom_version1 YOURSECONDSWVER\n```\n{% endif %}\n\n## Getting/Setting OMCI hardware version (ME 256)\n\n{% if include.customHwVersionAlert %}\n\n{% assign customHwVersionAlert = include.customHwVersionAlert %}\n{% include alert.html content=customHwVersionAlert alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n{% endif %}\n\n```sh\n# {{ include.flash }} get HW_HWVER\nHW_HWVER=V2.0\n# {{ include.flash }} set HW_HWVER MYHWVERSION\n```\n\n## Getting/Setting OMCI vendor ID (ME 256)\n\n{% if include.customVendorAlert %}\n\n{% assign customVendorAlert = include.customVendorAlert %}\n{% include alert.html content=customVendorAlert alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n{% endif %}\n\n```sh\n# {{ include.flash }} get PON_VENDOR_ID  \nPON_VENDOR_ID=ZTEG\n# {{ include.flash }} set PON_VENDOR_ID HWTC\n```\n\n## Getting/Setting OMCI equipment ID (ME 257)\n\n{% if include.customEquipAlert %}\n\n{% assign customEquipAlert = include.customEquipAlert %}\n{% include alert.html content=customEquipAlert alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n{% endif %}\n\n```sh\n# {{ include.flash }} get GPON_ONU_MODEL\nGPON_ONU_MODEL=DFP-34X-2C2\n# {{ include.flash }} set GPON_ONU_MODEL DFP-34X-XXX\n```\n\n## Getting/Setting OMCI OLT Mode and Fake OMCI\n\nConfigure how ONT Stick handle OMCI from OLT:\n\n```sh\n# {{ include.flash }} get OMCI_OLT_MODE\nOMCI_OLT_MODE=1\n# {{ include.flash }} set OMCI_OLT_MODE 2\n```\n\n| Value | Note            | OMCI Information                                                                                       |\n| ----- | --------------- | ------------------------------------------------------------------------------------------------------ |\n| 0     | Default Mode    | Stock setting, some values cannot be changed                                                           |\n| 1     | Huawei OLT Mode | Huawei MA5671a                                                                                         |\n| 2     | ZTE OLT Mode    | ZTE                                                                                                    |\n| 3     | Customized Mode | Custom Software/Hardware Version, OMCC, etc...                                                         |{% if include.omciOLT21 %}\n| 21    | Owerflow Mode   | Custom Software/Hardware Version, OMCC, etc... (this is a hack and causes sigsegv of `/bin/checkomci`) |{% endif %}\n\nSome vendors/wholesale providers/ISPs have explicit LAN Port Number provisioning or proprietary OMCI that the stick cannot understand, this will make the stick reply OK to whatever the OLT sends it via OMCI. \n\n`0` = Disable, `1` = Enable, Default is 0\n\n```sh\n# {{ include.flash }} get OMCI_FAKE_OK\nOMCI_FAKE_OK=0\n# {{ include.flash }} set OMCI_FAKE_OK 1\n```\n\n# Advanced settings\n\n## Setting management IP\n\n```sh\n# {{ include.flash }} get LAN_IP_ADDR\nLAN_IP_ADDR=192.168.2.1\n# {{ include.flash }} set LAN_IP_ADDR 192.168.1.1\n```\n\n## Getting/Setting the L2 Bridge MTU\n{% include alert.html content=\"Settings given via diag are not permanent after reboot\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\nGetting/Setting the MTU of the L2 bridge\n```sh\n# diag switch get max-pkt-len port all \nPort Speed \n---------- \n0 1538 \n2 2031 \n# diag switch set max-pkt-len port all length 2000\n```\n\n## Checking the currently active image\n```sh\n# nv getenv sw_active\nsw_active=1\n# nv getenv sw_version0\nsw_version0=V1_7_8_210412\n# nv getenv sw_version1\nsw_version1=V1_7_8_210412\n```\n\n## Booting to a different image\n```sh\n# nv setenv sw_commit 0|1\n# reboot\n```\n"
  },
  {
    "path": "_ont/ont-nokia-g-010g-a.md",
    "content": "---\ntitle: Nokia G-010G-A\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                |                  |\n| -------------- | ---------------- |\n| Vendor/Brand   | Nokia            |\n| Model          | G-010G-A         |\n| ODM            | ✅[^oem]        |\n| Chipset        | Broadcom BCM6838 |\n| Flash          |                  |\n| RAM            |                  |\n| System         |                  |\n| 2.5GBaseT      | No               |\n| Optics         | SC/APC           |\n| IP address     |                  |\n| Web Gui        | ✅               |\n| SSH            |                  |\n| Telnet         |                  |\n| Serial         |                  |\n| Form Factor    | ONT              |\n\n\n{% include image.html file=\"g-010g-a.jpg\"  alt=\"G-010G-A\" caption=\"Nokia G-010G-A\" %}\n\n# Curiosity\n\nIn the USA, the ex-BellSouth network deploys some ONTs with a 'ALT Optics' label that use a different wave length, 1310 nm for upstream and 1550 nm for downstream (instead of 1490 nm).\nThis was done to be able to quickly convert a network with low fibre capacity while allowing the same fibre to be reused for multiple services contemporarily: both FTTH and FTTC/IFITL[^att_alt_optics_1],[^att_alt_optics_2],[^att_alt_optics_3].\n\nThis is one of the few ONTs that has a variant that works with this wavelength. \n\n<hr>\n\n[^att_alt_optics_1]: Alt optic box. https://forums.att.com/conversations/att-internet-equipment/alt-optic-box/5defe95abad5f2f606973d3f\n[^att_alt_optics_2]: Alt Optic Network Modem Question. https://forums.att.com/conversations/att-fiber-installation/alt-optic-network-modem-question/61134eaa7f0d0c5065624aea\n[^att_alt_optics_3]: [AT&T Fiber] Bye bye 802.1x, you will not be missed. https://www.dslreports.com/forum/r33456904-, https://www.dslreports.com/forum/r33458733-\n[^oem]: The last model letter in a Nokia/Alcatel ONT indicates the variant: A-M ALu ONT Manufacturer, P-Z external Manufacturer https://hack-gpon.org/assets/img/ont-nokia-naming.jpg"
  },
  {
    "path": "_ont/ont-nokia-g-010g-d.md",
    "content": "---\ntitle: Nokia G-010G-D\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                                                              |\n| ---------------- | ---------------------------------------------------------------------------- |\n| Vendor/Brand     | Nokia                                                                        |\n| Model            | G-010G-D                                                                     |\n| Chipset          | RTL9607FS                                                                    |\n| Flash            | 256MB (SPI-NAND, Winbond 25N02KVZEIE)                                        |\n| RAM              | 512MB                                                                        |\n| System           | Linux (Realtek Unified SDK 2.2.0)                                            |\n| 2.5GBaseT        | Yes                                                                          |\n| Optics           | SC/APC                                                                       |\n| IP address       | 192.168.1.254                                                                |\n| Web Gui          | ✅ user `adminadmin`, password `ALC#FGU`                                     |\n| SSH              | ✅ user `adminadmin`, password `ALC#FGU`, but has access to limited shell    |\n| Telnet           |                                                                              |\n| Serial           | ⚠️ (U-boot is password protected, Linux kernel disabled it after boot)       |\n| Serial baud      | 115200                                                                       |\n| Serial encoding  | 8-N-1                                                                        |\n| Form Factor      | ONT                                                                          |\n\n## List of software versions\n- 3TN00816JJLJ25 \n\n## List of partitions\n\n| dev  | name     |\n| ---- | -------- |\n| mtd0 | \"boot\"   |\n| mtd1 | \"env\"    |\n| mtd2 | \"env2\"   |\n| mtd3 | \"RI\"     |\n| mtd4 | \"binfo\"  |\n| mtd5 | \"image0\" |\n| mtd6 | \"image1\" |\n| mtd7 | \"cfg\"    |\n| mtd8 | \"cfg_bak\" |\n| mtd9 | \"log\"    |\n| mtd10 | \"extfs\" |\n| mtd11 | \"mft_data\" |\n\n## Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the ONT’s shield.\n\n## Photos\n\nFront:\n\n{% include image.html file=\"g-010g-d_front.jpg\"  alt=\"Nokia G-010G-D Front\" caption=\"Nokia G-010G-D Front\" %}\n\n\nBack:\n\n{% include image.html file=\"g-010g-d_back.jpg\"  alt=\"Nokia G-010G-D Back\" caption=\"Nokia G-010G-D Back\" %}\n\n\nFront Internal:\n\n{% include image.html file=\"g-010g-d_internal_1.jpg\"  alt=\"Nokia G-010G-D Internal front-face with TTL Pinout\" caption=\"Nokia G-010G-D Internal front-face with TTL Pinout\" %}\n\nBack Internal:\n\n{% include image.html file=\"g-010g-d_internal_2.jpg\"  alt=\"Nokia G-010G-D Internal Back\" caption=\"Nokia G-010G-D Internal Back\" %}\n\n\n# Miscellaneous Links\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser)  for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n- [ispreview.co.uk](https://www.ispreview.co.uk/index.php/2022/09/pictured-openreachs-future-2-5gbps-ont-for-fttp-broadband.html)\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser) for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n"
  },
  {
    "path": "_ont/ont-nokia-g-010g-p.md",
    "content": "---\ntitle: Nokia G-010G-P\nhas_children: false\nlayout: default\nparent: Nokia\nalias: CIG G-97C1/CIG G-97CU\n---\n\n# Hardware Specifications\n\n|                  |                                                                     |\n| ---------------- | ------------------------------------------------------------------- |\n| Vendor/Brand     | Nokia                                                               |\n| Model            | G-010G-P                                                            |\n| ODM              | CIG                                                                 |\n| ODM Product Code | G-97C1                                                              |\n| Chipset          | Realtek RTL9601B                                                    |\n| Flash            |                                                                     |\n| RAM              |                                                                     |\n| System           | Linux (Luna SDK 1.9.0)                                              |\n| 2.5GBaseT        | No                                                                  |\n| Optics           | SC/APC                                                              |\n| IP address       | 192.168.100.1  (after a factory reset the ONT uses 10.89.42.157/16) |\n| Web Gui          | ✅ user `admin`, password `1234`                                    |\n| SSH              |                                                                     |\n| Telnet           | ✅ user `root`, password `huigu309`                                 |\n| Serial           | ✅                                                                  |\n| Serial baud      | 115200                                                              |\n| Serial encoding  | 8-N-1                                                               |\n| Form Factor      | ONT                                                                 |\n\n{% include image.html file=\"g-010g-p.jpg\"  alt=\"G-010G-P\" caption=\"Nokia G-010G-P\" %}\n\n## List of software versions\n\n- 3FE45655AOCK94\n- 3FE45655AOCK88\n\n# Usage of GponSLID\n\n## Access Full Shell\n\nTo access a complete linux shell just type:\n```sh\n#ONT>system\n#ONT/system>shell\n```\n\nTo exit the shell and reach the parent menu type `exit` or `x`, in each menu the `help` command will show how to use the shell\n\n{% include_relative ont-nokia-useful-command.md %}\n\n# Miscellaneous Links\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser) for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n\n\n"
  },
  {
    "path": "_ont/ont-nokia-g-010g-q.md",
    "content": "---\ntitle: Nokia G-010G-Q\nhas_children: false\nlayout: default\nparent: Nokia\nalias: CIG G-97CU\n---\n\n# Hardware Specifications\n\n|                       |                                                                                                                   |\n| --------------------- | ----------------------------------------------------------------------------------------------------------------- |\n| Vendor/Brand          | Nokia                                                                                                             |\n| Model                 | G-010G-Q                                                                                                          |\n| ODM                   | CIG                                                                                                               |\n| ODM Product Code      | G-97C                                                                                                            |\n| Chipset               | Realtek RTL9601B                                                                                                  |\n| Flash                 | 16 MB (Winbond [W25Q128JV](https://www.winbond.com/resource-files/w25q128jv%20revf%2003272018%20plus.pdf) 3V SPI) |\n| RAM                   | DDR2 325MHz                                                                                                       |\n| System                | Linux (Luna SDK 1.9.0)                                                                                            |\n| 2.5GBaseT             | No                                                                                                                |\n| Optics                | SC/APC                                                                                                            |\n| IP address            | 192.168.100.1                                                                                                     |\n| Web Gui (HTTP)        | ✅ Port 80 (⚠️ *only available when the PON connection **IS NOT** estabilished*)                                |\n| Web Gui (HTTPS)       | ✅ Port 443 **NO SSL SUPPORT**                                                                                    |\n| Web Gui Default Login | user `admin` password `1234`                                                                                      |\n| SSH                   |                                                                                                                   |\n| Telnet                | ✅ user `ONTUSER`, but has access to GponSLID and not GponCLI                                                     |\n| Serial                | ✅                                                                                                                |\n| Serial baud           | 115200                                                                                                            |\n| Serial encoding       | 8-N-1                                                                                                             |\n| Form Factor           | ONT                                                                                                               |\n\n{% include image.html file=\"g-010g-q.png\"  alt=\"G-010G-Q \" caption=\"Nokia G-010G-Q\" %}\n\n## List of software versions\n- 3FE49494AOCK21\n- 3FE45655BOCK55\n\n## List of partitions\n\n| dev  | size     | erasesize | name     |\n| ---- | -------- | --------- | -------- |\n| mtd0 | 00080000 | 00010000  | \"Boot\"   |\n| mtd1 | 00180000 | 00010000  | \"Config\" |\n| mtd2 | 00700000 | 00010000  | \"ImageA\" |\n| mtd3 | 00700000 | 00010000  | \"ImageB\" |\n\nThis ONT seems to support dual boot (notice partitions \"ImageA\" and \"ImageB\"), however this has not been tested. \n\n## Serial\n\n{% include image.html file=\"g-010g-q-serial-pinout.jpg\"  alt=\"G-010G-Q \" caption=\"G-010G-Q: serial pinout\" %}\nYou can easily communicate with the ONT using a TTL converter (for example the CH341A programmer in TTL mode) by connecting the converters' pins to the ONT following the pinout shown in the image above.\n\n*You don't actually need the two VCC pins, just use TX/RX and GND*\n\n{% include alert.html content=\"The ONT's serial logic is 3V3.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"red\" %}\n\nMake sure the logic of your TTL converter is 3V3 too, otherwise you might damage the ONT. To be sure 3V3 is being used, a voltage divider made of 2 resistors between the TX pin and ground as shown in the image below can be used.\n\n*Also make sure that your TTL converter RX pin voltage threshold is less than (or equal to) 3V3*\n\n{% include image.html file=\"g-010g-q-serial-voltage-divider.png\"  alt=\"G-010G-Q \" caption=\"G-010G-Q: simple serial level converter\" %}\n\nOnce everything is ok, any TTY client, such as PuTTY, can be used to open the connection with its baud rate set to 115200. At this point, the ONT can be turned on.\n\nA shell-like prompt will be visible:\n```\nONT>\n```\n\n{% include_relative ont-nokia-use.md username=\"ONTUSER\" %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n# Miscellaneous Links\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser) for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n\n\n"
  },
  {
    "path": "_ont/ont-nokia-g-010g-r.md",
    "content": "---\ntitle: Nokia G-010G-R\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                                                             |\n| ---------------- |-----------------------------------------------------------------------------|\n| Vendor/Brand     | Nokia                                                                       |\n| Model            | G-010G-R                                                                    |\n| ODM              | CIG                                                                         |\n| ODM Product Code | G-97C                                                                       |\n| Chipset          | RTL9601B                                                                    |\n| Flash            | 16MB                                                                        |\n| RAM              | 32MB                                                                        |\n| System           | Linux (Luna SDK 1.9.0)                                                      |\n| 2.5GBaseT        | No                                                                          |\n| Optics           | SC/APC                                                                      |\n| IP address       | 192.168.100.1  (after a factory reset the ONT uses 10.89.42.157/16)         |\n| Web Gui          | ✅ user `admin`, password `1234`                                             |\n| SSH              | ✅ but no login possible                                                     |\n| Telnet           | ✅ user `admin`, password `1234`, but has access to GponSLID and not GponCLI |\n| Serial           | ✅                                                                           |\n| Serial baud      | 115200                                                                      |\n| Serial encoding  | 8-N-1                                                                       |\n| Form Factor      | ONT                                                                         |\n\n## List of software versions\n- 3FE49717AOCK12 \n- 3FE49717AOCK38\n\n## List of partitions\n\n| dev  | size     | erasesize | name     |\n| ---- | -------- | --------- | -------- |\n| mtd0 | 00040000 | 00001000  | \"Boot\"   |\n| mtd1 | 00002000 | 00001000  | \"Config\" |\n| mtd2 | 00002000 | 00001000  | \"ImageA\" |\n| mtd3 | 0003c000 | 00001000  | \"ImageB\" |\n\n\n## Boot log\n\n```text\nCIG Version: 3.09.08\n\nU-Boot 2011.12.NA-svn145270 (Aug 18 2021 - 15:54:14)\n\nBoard: RTL9601D, CPU:112MHz, LX:200MHx, MEM:325MHz, Type:DDR2\nDRAM: 32 MB\nSPI-F: 204018/MMIO16-1/ModeC 1x16 MB (plr_flash_info @ 81c3bcac)\n*** Warning - bad CRC, using default environment\n\n--major = f2, minor = 1\n--major = f2, minor = 1\n*** !!! Check Result: EEPA and EEPB are all valid\nDevice care eqvid: 3FE49165AAAA, Init serial\nNet:   LUNA GMAC\nWarning: eth device name has a space!\n\nswcore_init\n**************************************\n*                                    *\n*  KEY -- Enter console terminal     *\n*                                    *\n**************************************\nwaiting for your select\ndo_jffs2_fsload offset 0x80400000 loadaddr=0xb4088000..\nget loadbit 0,bootbit 0\nGet current Image = ImageA..\n\n--- jffs2_part_info: partition number 2 for device sflash0 (sflash.0)\n\nLoading 'uImage' from  CRAMFS Partition 'imagea' to 0x80400000.\n\nRoot Filesystem crc check successfully!\n\n\nPRODUCT:  sfu\nSS  :  noss\nDSP :  nodsp\nWIFI:  nowifi\nXDSL:  nodsl\nSoftware version:  3FE49717AOCK38\n## Booting kernel from Legacy Image at 80400000 ...\n   Image Name:   Linux Kernel Image\n   Created:      2022-08-29  14:48:12 UTC\n   Image Type:   MIPS Linux Kernel Image (lzma compressed)\n   Data Size:    776207 Bytes = 758 KB\n   Load Address: 80000000\n   Entry Point:  80000000\n   Verifying Checksum ... OK\n   Uncompressing Kernel Image ... OK\n\nStarting kernel ...\n\nLinux version 2.6.30.9-cig-sfu-1 (root@compute3) (gcc version 4.4.6 (Realtek RS]\nRTL9602C PLL\nCPU revision is: 0000dc02\nDetermined physical RAM map:\n memory: 016ff000 @ 00000000 (usable)\n memory: 006ff000 @ 01800000 (usable)\nZone PFN ranges:\n  Normal   0x00000000 -> 0x00001eff\nMovable zone start PFN for each node\nearly_node_map[2] active PFN ranges\n    0: 0x00000000 -> 0x000016ff\n    0: 0x00001800 -> 0x00001eff\nBuilt 1 zonelists in Zone order, mobility grouping on.  Total pages: 7616\nKernel command line: console=ttyS0,115200  root=/dev/mtdblock2 mtdparts=sflash:1\nroot_dev_setup line 180 root: /dev/mtdblock2\nicache: 64kB/32B, dcache: 32kB/32B, scache: 0kB/0B\nNR_IRQS:128\nPID hash table entries: 128 (order: 7, 512 bytes)\nconsole [ttyS0] enabled\nDentry cache hash table entries: 4096 (order: 2, 16384 bytes)\nInode-cache hash table entries: 2048 (order: 1, 8192 bytes)\nMemory: 28056k/30712k available (1664k kernel code, 2656k reserved, 489k data, )\nCalibrating delay loop... 110.33 BogoMIPS (lpj=55168)\nMount-cache hash table entries: 512\nIMEM section size = 0x998\nnet_namespace: 500 bytes\nNET: Registered protocol family 16\nbio: create slab <bio-0> at 0\nNET: Registered protocol family 2\nIP route cache hash table entries: 1024 (order: 0, 4096 bytes)\nTCP established hash table entries: 1024 (order: 1, 8192 bytes)\nTCP bind hash table entries: 1024 (order: 0, 4096 bytes)\nTCP: Hash tables configured (established 1024 bind 1024)\nTCP reno registered\nNET: Registered protocol family 1\n=================================\nCONFIG_LUNA_SOC_GPIO: gpio_init()\n=================================\nRealtek GPIO Driver for Flash Reload Default\n=================================\nluna_capabilities_init\n=================================\n=================================\nluna_wdt_init\n=================================\n[Kthread : watchdog ] init complete!\n************ Watchdog Setting ****************\nWDT_E=0, (1-enable, 0-disable)\nLX(MHz)=200\nWDT_CLK_SC=3\nPH1_TO=17\nPH2_TO=0\nWDT_RESET_MODE=0\n**********************************************\n************ Watchdog Setting ****************\nWDT_E=1, (1-enable, 0-disable)\nLX(MHz)=200\nWDT_CLK_SC=3\nPH1_TO=17\nPH2_TO=0\nWDT_RESET_MODE=0\n**********************************************\nnetlog: listening on port 4660\nJFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.\nfuse init (API version 7.11)\nmsgmni has been set to 54\nalg: No test for stdrng (krng)\nio scheduler noop registered (default)\nSerial: 8250/16550 driver, 1 ports, IRQ sharing disabled\nserial8250: ttyS0 at MMIO 0x0 (irq = 49) is a 16550A\nloop: module loaded\nnbd: registered device at major 43\nPPP generic driver version 2.4.2\nNET: Registered protocol family 24\nnf_conntrack version 0.5.0 (479 buckets, 1916 max)\nip_tables: (C) 2000-2006 Netfilter Core Team\nTCP cubic registered\nNET: Registered protocol family 17\nphysmap platform flash device: 0b000000 at 14000000\nLuna SPI NOR FLASH G3 driver-204018/MMIO16-1 <5>master->name sflash\ncmd: cmdlinepart\n4 cmdlinepart partitions found on MTD device sflash\nCreating 4 MTD partitions on \"sflash\":\n0x000000000000-0x000000080000 : \"Boot\"\n0x000000080000-0x000000200000 : \"Config\"\n0x000000200000-0x000000900000 : \"ImageA\"\n0x000000900000-0x000001000000 : \"ImageB\"\nVFS: Mounted root (cramfs filesystem) readonly on device 31:2.\nFreeing unused kernel memory: 92k freed\n\n# num is 10,nothing need to do\n/\nONT>Starting Application: 0x00002000, /bin/TimerMgr................Done.\nStarting Application: 0x00001000, /bin/LogMgr................Done.\nMmr_trans_bosa_v40_probe() 1285 Vendor: SEMTECH, Part Number: 25L95, bosa ver =0\nMmr_Bob40_reset() 673, laser status:80\nStarting Application: 0x00007000, /bin/MiscMgr................Done.\nstarting to upgrade boot\nfile[/bootimg/00f2_01_01] length=184320\nFlash bootload versin is 3.09.08\nUpgrading bootload versin is 3.09.08\nUpgrading boot is old\nCheck base image file CRC ... cal_crc (2af075a1) ori_crc (2af075a1) Success\n```\n\n\n## Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the ONT’s shield like the below photo:\n{% include image.html file=\"g-010g-r_serial_pinouts.jpg\" alt=\"Nokia G-010G-R Ports\" caption=\"Nokia G-010G-R Ports\" %}\n\nPlease note that some models come without a pre-soldered pin header.\n{% include image.html file=\"g-010g-r_headerless.jpg\" alt=\"Nokia G-010G-R w/o pin header\" caption=\"Nokia G-010G-R w/o pin header\" %}\n\n{% include_relative ont-nokia-use.md username=\"ONTUSER\" %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n\n# SSH\n\nThe image contains dropbear.\n```text\n#ONT/system/shell>dropbear -V\nDropbear v2019.78\n```\n\nThe SSH port (22) is blocked per default by iptables rules.\n```text\n#ONT/system/shell>iptables --list\nChain INPUT (policy ACCEPT)\ntarget     prot opt source               destination\nDROP       all  --  anywhere             anywhere           state INVALID\nACL        all  --  anywhere             anywhere\n\nChain FORWARD (policy DROP)\ntarget     prot opt source               destination\nACCEPT     all  --  anywhere             anywhere\nACCEPT     all  --  anywhere             anywhere           state RELATED,ESTAB\nDROP       all  --  anywhere             anywhere           state INVALID\n\nChain OUTPUT (policy ACCEPT)\ntarget     prot opt source               destination\nACCEPT     all  --  anywhere             anywhere           state RELATED,ESTAB\nDROP       all  --  anywhere             anywhere           state INVALID\n\nChain ACL (1 references)\ntarget     prot opt source               destination\nDROP       tcp  --  anywhere             anywhere           tcp dpt:http\nDROP       tcp  --  anywhere             anywhere           tcp dpt:telnet\nDROP       tcp  --  anywhere             anywhere           tcp dpt:ssh\nDROP       tcp  --  anywhere             anywhere           tcp dpt:ftp\nRETURN     all  --  anywhere             anywhere\n\nChain INVALID (0 references)\ntarget     prot opt source               destination\n```\n\nThe corresponding rules can simply be deleted as the default policy allows any traffic.\n```text\n#ONT/system/shell>iptables -D ACL 1\n```\n\nSince the root user does not have a password set and dropbear disallows logins with empty passwords for security reasons, there is no login possible.\n```text\n#ONT/system/shell>cat /etc/passwd\nroot:x:0:0:root:/root:/bin/sh\nbin:x:1:1:bin:/bin:/bin/false\ndaemon:x:2:2:daemon:/sbin:/bin/false\nadm:x:3:4:adm:/var/adm:/bin/false\nlp:x:4:7:lp:/var/spool/lpd:/bin/false\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/bin/false\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/bin/false\nuucp:x:10:14:uucp:/var/spool/uucp:/bin/false\noperator:x:11:0:operator:/root:/bin/false\ngames:x:12:100:games:/usr/games:/bin/false\ngopher:x:13:30:gopher:/var/gopher:/bin/false\nftp:x:14:50:FTP User:/var/ftp:/bin/false\nnobody:x:99:99:Nobody:/:/bin/false\n\n#ONT/system/shell>cat /etc/shadow\nroot::10933:0:99999:7:::\n```\n\n\n# Miscellaneous Links\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser)  for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n- [ispreview.co.uk](https://www.ispreview.co.uk/index.php/2022/09/pictured-openreachs-future-2-5gbps-ont-for-fttp-broadband.html)\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser) for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n"
  },
  {
    "path": "_ont/ont-nokia-g-010g-t.md",
    "content": "---\ntitle: Nokia G-010G-T\nhas_children: false\nlayout: default\nparent: Nokia\nalias: CIG G-97CP/G-97CU\n---\n\n# Hardware Specifications\n\n|                  |                                                                                |\n| ---------------- | ------------------------------------------------------------------------------ |\n| Vendor/Brand     | Nokia                                                                          |\n| Model            | G-010G-T                                                                       |\n| ODM              | CIG                                                                            |\n| ODM Product Code | [G-97CP](/ont-cig-g-97cp)                                                      |\n| Chipset          | RTL9601D                                                                       |\n| Flash            | 16MB                                                                           |\n| RAM              | 32MB                                                                           |\n| System           | Linux (Luna SDK 1.9.0)                                                         |\n| 2.5GBaseT        | Yes                                                                            |\n| Optics           | SC/APC                                                                         |\n| IP address       | 192.168.100.1  (after a factory reset the ONT uses 10.89.42.157/16)            |\n| Web Gui          | ✅ user `admin`, password `1234`                                               |\n| SSH              | Can be enabled, locked down by iptables rule                                   |\n| Telnet           | ✅ user `ONTUSER`, password `1234`, but has access to GponSLID and not GponCLI |\n| Serial           | ✅                                                                             |\n| Serial baud      | 115200                                                                         |\n| Serial encoding  | 8-N-1                                                                          |\n| Form Factor      | ONT                                                                            |\n\n{% include image.html file=\"q-010g-t_front.jpg\"  alt=\"Nokia G-010G-T Front\" caption=\"Nokia G-010G-T Front\" %}\n{% include image.html file=\"q-010g-t_back.jpg\"  alt=\"Nokia G-010G-T Back\" caption=\"Nokia G-010G-T Back\" %}\n{% include image.html file=\"q-010g-t_ports.jpg\"  alt=\"Nokia G-010G-T Ports\" caption=\"Nokia G-010G-T Ports\" %}\n{% include image.html file=\"q-010g-t_internal_up.jpg\"  alt=\"Nokia G-010G-T Internal Up\" caption=\"Nokia G-010G-T Internal Up\" %}\n{% include image.html file=\"q-010g-t_internal_down.jpg\"  alt=\"Nokia G-010G-T Internal Down\" caption=\"Nokia G-010G-T Internal Down\" %}\n{% include image.html file=\"q-010g-t_flash.jpg\"         alt=\"Nokia G-010G-T Winbond 25Q128 Flash memory\"  caption=\"Nokia G-010G-T Winbond 25Q128 Flash memory\"  %}\n{% include image.html file=\"q-010g-t_laser_driver.jpg\"  alt=\"Nokia G-010G-T Semtech GN25L95 Laser Driver\" caption=\"Nokia G-010G-T Semtech GN25L95 Laser Driver\" %}\n{% include image.html file=\"q-010g-t_rtl8221b.jpg\"      alt=\"Nokia G-010G-T Realtek RTL8221B\"             caption=\"Nokia G-010G-T Realtek RTL8221B\"             %}\n{% include image.html file=\"q-010g-t_rtl9601d.jpg\"      alt=\"Nokia G-010G-T Realtek RTL9601D\"             caption=\"Nokia G-010G-T Realtek RTL9601D\"             %}\n\n## List of software versions\n- 3FE49717AOCK12 \n- 3FE49717AOCK49 \n\n## List of partitions\n\n| dev  | size     | erasesize | name     | format                                          |\n| ---- | -------- | --------- | -------- | ----------------------------------------------- |\n| mtd0 | 00040000 | 00001000  | \"Boot\"   | Binary                                          |\n| mtd1 | 00002000 | 00001000  | \"Config\" | [jffs2](https://en.wikipedia.org/wiki/JFFS2)    |\n| mtd2 | 00002000 | 00001000  | \"ImageA\" | [cramfs](https://en.wikipedia.org/wiki/Cramfs)  |\n| mtd3 | 0003c000 | 00001000  | \"ImageB\" | [cramfs](https://en.wikipedia.org/wiki/Cramfs)  |\n\n## Kernel command line arguments\n```\nconsole=ttyS0,115200  \nroot=/dev/mtdblock3 \nmtdparts=sflash:512K@0x0(Boot),0x180000@0x80000(Config),7M@0x200000(ImageA),7M@0x900000(ImageB) \nrootfstype=cramfs \nhasEeprom=0 \n5srst=0 \neqvid=3FE49715ADAA01 \nuboot_version=V3.9.08 \nmajor=f4 \nminor=1\n```\n\nNote: When **Reset** button is held for over 5 seconds then parameter `5srst=0` is changed to `1`.\n\n## Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the ONT's shield:\n\n{% include image.html file=\"q-010g-t_ttl.jpg\"  alt=\"Nokia G-010G-T TTL\" caption=\"Nokia G-010G-T TTL\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include_relative ont-nokia-use.md username=\"ONTUSER\" %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n## Notes for Openreach ONT\n\nSerial speed is 9600 8n1.  Serial is iactive until the reset button is held down for ~30 seconds, then it'll break into the ONT> command line.\nThere is no running webserver.  Telnet and Dropbear are running (if you disable the firewall) but no login is configured, so not useful. \n\n# Miscellaneous Links\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser) for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n- [ispreview.co.uk](https://www.ispreview.co.uk/index.php/2022/09/pictured-openreachs-future-2-5gbps-ont-for-fttp-broadband.html)\n"
  },
  {
    "path": "_ont/ont-nokia-g-010s-a.md",
    "content": "---\ntitle: Nokia G-010S-A\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                          |\n| ---------------- | ---------------------------------------- |\n| Vendor/Brand     | Nokia                                    |\n| Model            | G-010S-A                                 |\n| ODM              | ✅[^oem]                                 |\n| Chipset          | Lantiq PEB98035                          |\n| Flash            | 16 MB                                    |\n| RAM              | 64 MB                                    |\n| CPU              | MIPS 34Kc interAptiv                     |\n| CPU Clock        | 400MHz                                   |\n| System           | OpenWRT                                  |\n| HSGMII           | Yes                                      |\n| Optics           | SC/UPC                                   |\n| IP address       | 192.168.1.10                             |\n| Web Gui          | ✅ user `adminadmin`, password `ALC#FGU` |\n| SSH              | ✅ user `ONTUSER`, password `SUGAR2A041` |\n| Telnet           |                                          |\n| Serial           | ✅ on SFP                                |\n| Serial baud      | 115200                                   |\n| Serial encoding  | 8-N-1                                    |\n| Form Factor      | miniONT SFP                              |\n\n{% include image.html file=\"g-010s-a.png\"  alt=\"G-010S-A\" caption=\"G-010S-A\" %}\n{% include image.html file=\"g-010s-a-teardown.jpg\"  alt=\"G-010S-A Teardown\" caption=\"G-010S-A Teardown\" %}\n\n\n## Modifying firmware\n\nThe Nokia G-010S-A can be flashed with the [Nokia G-010S-P](/ont-nokia-g-010s-p) firmware, provided the MTD layout has been changed beforehand to match the new one. For the full procedure, see this post on [lafibre.info](https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps/msg870551/#msg870551)\n\n## List of software versions\n\n- [https://github.com/hwti/G-010S-A/tree/main/firmwares](https://github.com/hwti/G-010S-A/tree/main/firmwares)\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the SFP connector.\n\n| USB TTL(UART) Adapter | SFP 20pins Molex connector |\n| --------------------- | -------------------------- |\n| 3.3V                  | pin #15 and #16            |\n| TX                    | pin #3                     |\n| RX                    | pin #6                     |\n| GND                   | pin #14 and #10            |\n\n{% include alert.html content=\"Try PIN 10 or other GND PINs if the connection doesn't work by using PIN 14.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of partitions\n\n| dev   | size     | erasesize | name          |\n| ----- | -------- | --------- | ------------- |\n| mtd0  | 00040000 | 00010000  | \"uboot\"       |\n| mtd1  | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2  | 00600000 | 00010000  | \"linux\"       |\n| mtd3  | 004d81b6 | 00010000  | \"rootfs\"      |\n| mtd4  | 000b0000 | 00010000  | \"rootfs_data\" |\n| mtd5  | 00600000 | 00010000  | \"image1\"      |\n| mtd6  | 00100000 | 00010000  | \"configfs\"    |\n| mtd7  | 00210000 | 00010000  | \"logfs\"       |\n| mtd8  | 00010000 | 00010000  | \"ri\"          |\n| mtd9  | 00010000 | 00010000  | \"sfp\"         |\n| mtd10 | 00010000 | 00010000  | \"ribackup\"    |\n\n## List of software versions\n\n- 3FE46398AFGA95\n- 3FE46398AFGB89\n- 3FE46398BFGA06\n- 3FE46398BFGB18\n- 3FE46398BFIB36\n- 3FE46398BGCB22\n- 3FE47111AFGB89\n- 3FE47111BFHB32\n\nSee more info on: [Firmwares G-010S-A](https://github.com/hwti/G-010S-A#firmwares)\n\n# Usage\n\n## Enabling serial\n\n```sh\nfw_setenv bootdelay 5\nfw_setenv asc0 0\nfw_setenv preboot\n```\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\n```sh\nonu ploamsg\n```\n\n## Getting information on the OLT vendor\n\n```sh\nomci_pipe.sh meg 131 0\n```\n\n## Querying a particular OMCI ME\n\n```sh\nomci_pipe.sh meg MIB_IDX ME_IN\n```\nWhere `MIB_IDX` is the MIB ID and `ME_IN` is the ME instance number\n\n## Getting/Setting Speed LAN Mode\n\n| Velue | Speed                              |\n| ----- | ---------------------------------- |\n| 4     | 1 Gbps / SGMII                     |\n| 5     | 2.5 Gbps / HSGMII with auto-neg on |\n\nTo enable the interface to sync at 2.5 Gbps speeds / using HSGMII with auto-neg on:\n\n```sh\nfw_setenv sgmii_mode 5\n```\n\nTo revert the change back to default:\n```sh\nfw_setenv sgmii_mode\n```\n\nTo get the (H)SGMII Mode:\n\n```sh\nonu lanpsg 0\n```\nThe `link_status` variable tells the current speed\n\n# GPON/OMCI settings\n\n## Enabling parameter modification\nThis setting must be set in order to perform other parameter modifications\n```sh\nritool set OperatorID 0000\n```\n\n## Getting/Setting ONU GPON Serial Number\nTo check the current serial number:\n```sh\nonu gtcsng\n```\n\nTo set the current serial number:\n```sh\nritool set MfrID ABCD\nritool set G984Serial 012345678\nritool set YPSerialNum 012345678\n```\n\n## Getting/Setting ONU GPON PLOAM password\nTo check the current password (the password field contains decimal values of ASCII characters):\n```sh\nonu gtccg\n```\n\nThis value can be changed using the web interface.\n\n## Getting/Setting OMCI software version (ME 7)\n\nThe software version must be changed by directly modifying firmware by using the patches found in the wiki's page about the [Nokia G-010-A](https://github.com/hwti/G-010S-A) ONT and then adding a folder `0001_swversion` that contins a file `patch.sh` with the following content:\n```\n#!/bin/sh\n\nset -e\n\nROOTFS=$1\n\necho \"Changing to software version desidered\"\nsed -i s/3FE46398BGCB22/3FE45655BOCK99/g \"$ROOTFS/usr/etc/buildinfo\"\n```\nWhere `3FE46398BGCB22` is the current software version and `3FE45655BOCK99` the desired software version\n\n## Getting/Setting OMCI hardware version (ME 256)\n\n```\nritool set HardwareVersion 3FE47211EGAA\nritool set ICS 01\n```\n\n## Getting/Setting OMCI equipment ID (ME 257)\n\nThis ONT is designed to save Nokia's equipment ID, specifically to set the equipment ID of a Nokia G-010G-Q the following commands are to be used:\n\n```sh\nritool set CleiCode __________\nritool set Mnemonic G-010G-Q__\n```\nWhere `CleiCode` is the prefix and `Mnemonic` the postfix.\n\n# Advanced settings\n\n## Transferring files to the stick\n\n{% include alert.html content=\"If you use a modern OpenSSH version (e.g. >= 8.8) you will have to use the legacy protocol and enable some deprecated algorithms: scp `-oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss [...]`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n# scp rootfs.bin root@192.168.1.10:/tmp/\n```\n\n## Backup of all partition\n\nMake a backup of all partitions, an easy way is to run these commands:\n- On the stick run:\n```sh\ncat /proc/mtd\n```\n- For each mtdX run this command in the lantiq shell:\n```sh\ncp /dev/mtdX /tmp\n```\n\n{% include alert.html content=\"If you use a modern OpenSSH version (e.g. >= 8.8) you will have to use the legacy protocol and enable some deprecated algorithms: `scp -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss [...]`\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nAnd in the computer shell:\n```sh\nscp ONTUSER@192.168.1.10:/tmp/mtdX ./\n```\n\n## Checking the currently active image\n\n```sh\nupgradestatus\n```\n\n## Setting management MAC\n\n```\nritool set MACAddress 12:34:56:78:9A:BC\n```\n\n## Setting management IP\n\n```\nifconfig eth0:1 192.168.1.10 netmask 255.255.255.0\n```\n\n## Flashing a new rootfs via SSH\n\n{% include alert.html content=\"Only the inactive image can be flashed\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n{% include alert.html content=\"It is recommended to enable serial access via TTL\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nThe following commands are used to flash a new rootfs to image1 and then boot to it:\n```sh\nmtd write /tmp/rootfs.bin image1\nupdate_env_flag 1\nreboot\n```\n\n##  Disabling Dying Gasp\n```sh\nuci set gpon.gtc.nDyingGaspEnable='0'; uci commit gpon\n```\n\n## Rebooting the ONU\n```sh\nreboot\n```\n\n## Miscellaneous commands\n\n```sh\ncat /configs/image_version\ncat /usr/etc/buildinfo\nritool dump\nomciMgr\n```\n\n# Miscellaneous Links\n\n- [G-010S-A](https://github.com/hwti/G-010S-A)\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n- [Bypassing the HH3K up to 2.5Gbps using a BCM57810S NIC](https://www.dslreports.com/forum/r32230041-Internet-Bypassing-the-HH3K-up-to-2-5Gbps-using-a-BCM57810S-NIC)\n- [Nokia G-010S-A Pin 6 Iusse - Rsaxvc.net](https://rsaxvc.net/blog/2020/8/15/Nokia_G-010S-A_Pin_6_Issue.html)\n- [Might require solder mod in order to work with BCM57810S NIC](/broadcom-57810s#compatibility)\n\n<hr>\n\n[^oem]: The last model letter in a Nokia/Alcatel ONT indicates the variant: A-M ALu ONT Manufacturer, P-Z external Manufacturer https://hack-gpon.org/assets/img/ont-nokia-naming.jpg\n\n"
  },
  {
    "path": "_ont/ont-nokia-g-010s-b.md",
    "content": "---\ntitle: Nokia G-010S-B\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                          |\n| ---------------- | ---------------------------------------- |\n| Vendor/Brand     | Nokia                                    |\n| Model            | G-010S-B                                 |\n| ODM              | SourcePhotonics                          |\n| ODM Product Code |                                          |\n| Chipset          | Lantiq PEB98035                          |\n| CPU              | MIPS 34Kc interAptiv                     |\n| CPU Clock        | 400MHz                                   |\n| Flash            | 16 MB (Macronix MX25L25635FZ2R-10G)      |\n| RAM              | 64 MB (Winbond W9751G6KB-25I)            |\n| System           | OpenWRT                                  |\n| HSGMII           | Yes                                      |\n| Optics           | SC/UPC                                   |\n| IP address       | 192.168.1.10                             |\n| Web Gui          | ✅ user `adminadmin`, password `ALC#FGU` |\n| SSH              | ✅ user `ONTUSER`, password `SUGAR2A041` |\n| Telnet           |                                          |\n| Serial           | ✅ on SFP                                |\n| Serial baud      | 115200                                   |\n| Serial encoding  | 8-N-1                                    |\n| Form Factor      | miniONT SFP                              |\n\n{% include image.html file=\"g-010s-b_teardown_1.jpg\"  alt=\"G-010S-B Teardown\" caption=\"G-010S-B Teardown\" %}\n{% include image.html file=\"g-010s-b_teardown_2.jpg\"  alt=\"G-010S-B Teardown\" caption=\"G-010S-B Teardown\" %}\n\n\n## List of partitions\n\n| dev   | size     | erasesize | name          |\n| ----- | -------- | --------- | ------------- |\n| mtd0  | 00040000 | 00010000  | \"uboot\"       |\n| mtd1  | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2  | 00c00000 | 00010000  | \"linux\"       |\n| mtd3  | 0013cedb | 00010000  | \"kernel\"      |\n| mtd4  | 00ac3125 | 00010000  | \"rootfs\"      |\n| mtd5  | 00600000 | 00010000  | \"rootfs_data\" |\n| mtd6  | 00c00000 | 00010000  | \"image1\"      |\n| mtd7  | 00200000 | 00010000  | \"configfs\"    |\n| mtd8  | 00300000 | 00010000  | \"logfs\"       |\n| mtd9  | 00200000 | 00010000  | \"extfs\"       |\n| mtd10 | 00010000 | 00010000  | \"ri\"          |\n| mtd11 | 00010000 | 00010000  | \"sfp\"         |\n| mtd12 | 00010000 | 00010000  | \"ribackup\"    |\n| mtd13 | 00010000 | 00010000  | \"reserve\"     |\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the SFP connector.\n\n| USB TTL(UART) Adapter | SFP 20pins Molex connector |\n| --------------------- | -------------------------- |\n| 3.3V                  | pin #15 and #16            |\n| TX                    | pin #2                     |\n| RX                    | pin #7                     |\n| GND                   | pin #14 and #10            |\n\n{% include alert.html content=\"Try PIN 10 or other GND PINs if the connection doesn't work by using PIN 14.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n# General Settings and Useful Commands\n\n##  Disabling Dying Gasp\n```sh\nuci set gpon.gtc.nDyingGaspEnable='0'; uci commit gpon\n```\n\n# Hardware Modding\n\n- [Nokia G-010S-A Pin 6 Iusse - Rsaxvc.net](https://rsaxvc.net/blog/2020/8/15/Nokia_G-010S-A_Pin_6_Issue.html)\n\n# Miscellaneous Links\n\n- [G-010S-A](https://github.com/hwti/G-010S-A)\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n- [Bypassing the HH3K up to 2.5Gbps using a BCM57810S NIC](https://www.dslreports.com/forum/r32230041-Internet-Bypassing-the-HH3K-up-to-2-5Gbps-using-a-BCM57810S-NIC)\n- [Tech Info Depot Wiki](http://en.techinfodepot.shoutwiki.com/wiki/Nokia_G-010S-B)\n\n"
  },
  {
    "path": "_ont/ont-nokia-g-010s-p.md",
    "content": "---\ntitle: Nokia G-010S-P\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                          |\n| ---------------- | ---------------------------------------- |\n| Vendor/Brand     | Nokia                                    |\n| Model            | G-010S-P                                 |\n| ODM              | SourcePhotonics                          |\n| ODM Product Code |                                          |\n| Chipset          | Lantiq PEB98035                          |\n| Flash            | 16 MB                                    |\n| RAM              | 64 MB                                    |\n| CPU              | MIPS 34Kc interAptiv                     |\n| CPU Clock        | 400MHz                                   |\n| System           | OpenWRT                                  |\n| HSGMII           | Yes                                      |\n| Optics           | SC/APC                                   |\n| IP address       |                                          |\n| Web Gui          | Can be enabled                           |\n| SSH              | ✅ user `ONTUSER`, password `SUGAR2A041` |\n| Telnet           |                                          |\n| Serial           | ✅ on SFP                                |\n| Serial baud      | 115200                                   |\n| Serial encoding  | 8-N-1                                    |\n| Form Factor      | miniONT SFP                              |\n\n{% include image.html file=\"g-010s-p.jpg\"  alt=\"G-010S-P\" caption=\"G-010S-P\" %}\n<br/>\n{% include image.html file=\"g-010s-p-and-ma5671a.jpg\"  alt=\"G-010S-P and MA5671A Teardown\" caption=\"G-010S-P and MA5671A Teardown\" %}\n<br/>\n{% include alert.html content=\"G-010S-P and other models will not expose an ethernet interface unless the fiber cable is connected ([source](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300))\" alert=\"Warning\" icon=\"svg-warning\" color=\"yellow\" %}\n\n## Firmware is interchangeable with:\n\n- [Huawei MA5671A](/ont-huawei-ma5671a)\n- [FS.com GPON ONU Stick with MAC / SourcePhotonics SPS-34-24T-HP-TDFO](/ont-fs-com-gpon-onu-stick-with-mac)\n- [Hilink HL23446](/ont-hilink-hl23446)\n- {:.text-red-200 } Dasan H650SFP \n- {:.text-red-200 } DpOptics D23446    \n- {:.text-red-200 } Photonics SPS-34-24T-HP-TDFO\n\nThe [Nokia G-010S-A](/ont-nokia-g-010s-a) can be flashed with the Nokia G-010S-P firmware, provided the MTD layout has been changed beforehand to match the new one. For the full procedure, see the post on [lafibre.info](https://lafibre.info/remplacer-livebox/guide-de-connexion-fibre-directement-sur-un-routeur-voire-meme-en-2gbps/msg870551/#msg870551)\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the SFP connector.\n\n| USB TTL(UART) Adapter | SFP 20pins Molex connector |\n| --------------------- | -------------------------- |\n| 3.3V                  | pin #15 and #16            |\n| TX                    | pin #2                     |\n| RX                    | pin #7                     |\n| GND                   | pin #14 and #10            |\n\n{% include alert.html content=\"Try PIN 10 or other GND PINs if the connection doesn't work by using PIN 14.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of partitions\n\n| dev  | size     | erasesize | name          |\n| ---- | -------- | --------- | ------------- |\n| mtd0 | 00040000 | 00010000  | \"uboot\"       |\n| mtd1 | 00080000 | 00010000  | \"uboot_env\"   |\n| mtd2 | 00740000 | 00010000  | \"linux\"       |\n| mtd3 | 0061eedc | 00010000  | \"rootfs\"      |\n| mtd4 | 00370000 | 00010000  | \"rootfs_data\" |\n| mtd5 | 00800000 | 00010000  | \"image1\"      |\n\n# General Settings and Useful Commands\n\n##  Disabling Dying Gasp\n```sh\nfw_setenv nDyingGaspEnable 0\n```\n\n## Enabling the Web UI\n\nTo activate the web-ui you can use [this guide from dslreport forum](https://web.archive.org/web/20241205080939/https://www.dslreports.com/forum/r32458588-) archived on [archive.org](https://archive.org/).\n\n# Miscellaneous Links\n\n- [alcatel_lucent-lantiq_falcon](https://github.com/minhng99/alcatel_lucent-lantiq_falcon)\n- [uboot lantiq falcon](https://github.com/minhng99/u-boot_lantiq_falcon)\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n\n\n"
  },
  {
    "path": "_ont/ont-nokia-g-010s-q.md",
    "content": "---\ntitle: Nokia G-010S-Q\nhas_children: false\nlayout: default\nparent: Nokia\nalias: CIG G-97S\n---\n\n# Hardware Specifications\n\n|                  |                                                                                                                   |\n| ---------------- | ----------------------------------------------------------------------------------------------------------------- |\n| Vendor/Brand     | Nokia                                                                                                             |\n| Model            | G-010S-Q                                                                                                          |\n| ODM              | CIG                                                                                                               |\n| ODM Product Code | G-97S                                                                                                             |\n| Chipset          | RTL9601CI                                                                                                         |\n| Flash            | 16 MB (Macronix MX25L12835F)                                                                                      |\n| RAM              |                                                                                                                   |\n| System           |                                                                                                                   |\n| HSGMII           |                                                                                                                   |\n| Optics           |                                                                                                                   |\n| IP address       | 192.168.100.1                                                                                                     |\n| Web Gui          | ✅ Port 80 (⚠️ *only available when the PON connection **IS NOT** estabilished*), user `admin`, password `1234` |\n| Telnet           | ✅ user `admin`, password `1234`, but has access to GponSLID and not GponCLI                                      |\n| SSH              |                                                                                                                   |\n| Telnet           |                                                                                                                   |\n| Serial           |                                                                                                                   |\n| Form Factor      | miniONT SFP                                                                                                       |\n\n{% include image.html file=\"g-010s-q-teardown-1.jpg\" alt=\"Nokia G-010S-Q Teardown Up\" caption=\"Nokia G-010S-Q Teardown Up\" %}\n{% include image.html file=\"g-010s-q-teardown-2.jpg\" alt=\"Nokia G-010S-Q Teardown Down\" caption=\"Nokia G-010S-Q Teardown Down\" %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n# Miscellaneous Links\n\n- [Nokia G-010S-Q](https://github.com/Anime4000/RTL960x/issues/52)\n- [CUG G-97S DataSheet](https://www.cigtech.com/wp-content/uploads/2018/09/G-97S_DataSheet_V2.pdf)\n- [MIB file parser](https://github.com/nanomad/nokia-ont-mib-parser) for NOKIA's GPON ONTs (*helps you parsing the .mib file located in `/mnt/rwdir`*)\n\n\n"
  },
  {
    "path": "_ont/ont-nokia-use.md",
    "content": "# Usage\n\n{% include alert.html content=include.alertUsage alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n\n{% unless include.disableEnablePassword==true %}\n## Login and enable\n\n{% if include.alertEnablePassword  %}\n{% include alert.html content=include.alertEnablePassword alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n{% endif %}\n\nOnce you're logged in, a custom menu will be shown and you'll be able to access the linux shell by first typing `system` followed by `shell`:\n\n```sh\nONT>enable\n#ONT>login\nUser name:{{include.username}}\nPassword: ****\n```\n\nThe enable password can be generated using the following form:\n\n{% include cig_password.html username=include.username %}\n\n{% endunless  %}\n\n# Accessing Full Shell\n\nTo access a complete linux shell just type:\n```sh\n#ONT>system\n#ONT/system>shell\n```\n\nTo exit the shell and reach the parent menu type `exit` or `x`, in each menu the `help` command will show how to use the shell\n"
  },
  {
    "path": "_ont/ont-nokia-useful-command.md",
    "content": "# GPON ONU status\n\n## Getting the operational status of the ONU\n```sh\n#ONT>traffic\n#ONT/system>pon\n#ONT/system/pon>show link\n\n ----------------- LINK STATE -----------------\n Link State:              ACTIVE\n Operation State Machine: OPERATION (O5)\n ----------------- STATE  END -----------------\n```\n\n## Querying a particular OMCI ME\n\n```sh\n#ONT>system\n#ONT/system>mib\n#ONT/system/mib>show 256\nTable Ontg, Ont-g, total 1 instances\n\nEntityID                  = 0x0000\nVID                       = \"ALCL\"\nVersion                   = AA BB CC DD EE FF 11 22 33 44 55 66 00 00\nSerialNum                 = AA BB CC DD EE FF 11 22\nTraffMgtOpt               = 0\nAtmCCOpt                  = 0\nBatteryBack               = 1\nAdminState                = 0\nOpState                   = 0\nOnuSurvivalTime           = 0\nLoid                      = \"\"\nPassword                  = \"\"\nAuthState                 = 0\nOntState                  = 1\n```\n\n# GPON/OMCI settings\n\n## Committing changes to the OMCI MIB tables for GPON operation\n```sh\n#ONT>system\n#ONT/system>mib\n#ONT/system/mib>reset\n```\n\n## Getting/Setting ONU GPON Serial Number\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>eqsn set \"ALCL00000001\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>eqsn get\neqsn: ALCL00000001\n---ATECMDRESULT--- OK\n```\n\n## Getting/Setting PLOAM\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>pon_passwd set \"123456789\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>pon_passwd get\npon_passwd: 31323334353637383900\n---ATECMDRESULT--- OK\n#ONT/system/misc>register_id set \"123456789\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>register_id get\npon_passwd: 31323334353637383900\n---ATECMDRESULT--- OK\n```\n\n## Setting OMCI software version (ME 7)\nThe following command must be typed into the standard linux shell:\n```sh\n# echo SWVER=3FE49337AOCK80 > /mnt/rwdir/sys.cfg\n```\n\n## Getting/Setting OMCI hardware version (ME 256)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>eqvid get\neqvid: 3FE45458ABAA06\nhex_eqvid: 0x3346453435343538414241413036\n---ATECMDRESULT--- OK\n#ONT/system/misc>eqvid set \"YOUR_CUSTOM_VID\"\n```\n\n## Getting/Setting OMCI vendor ID (ME 256)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>vendor get\nvendor: ALCL\n---ATECMDRESULT--- OK\n#ONT/system/misc>vendor set \"ALCL\"\n---ATECMDRESULT--- OK\n```\n\n## Getting/Setting OMCI equipment ID (ME 257)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>eqid set \"YOUR_CUSTOM_EQUID\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>eqid get\neqid: YOUR_CUSTOM_EQUID\nhex_eqid: 0x594F55525F435553544F4D5F4551554944000000000000\n---ATECMDRESULT--- OK\n```\n\n## Getting/Setting MAC address\n`mac1` = Lower MAC ID (printed on label)\n\n`mac2` = Upper MAC ID (usually = `mac1`+`3`)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>mac1 get\nmac1: aa.bb.12.34.56.78\n---ATECMDRESULT--- OK\n#ONT/system/misc>mac2 get\nmac2: aa.bb.12.34.56.7b\n---ATECMDRESULT--- OK\n#ONT/system/misc>mac1 set 12:34:56:11:22:33\n---ATECMDRESULT--- OK\n#ONT/system/misc>mac2 set 12:34:56:11:22:44\n---ATECMDRESULT--- OK\n```\n\n# Advanced settings\n\n## Setting management IP\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>admin_ip get\nadmin_ip: 192.168.100.1\n---ATECMDRESULT--- OK\n#ONT/system/misc>admin_ip set 192.168.1.1\n#ONT/system/misc>admin_mask get\nadmin_mask: 255.255.255.0\n---ATECMDRESULT--- OK\n#ONT/system/misc>admin_mask set 255.255.255.0\n```\n\n## (Re-)enable webinterface\n```sh\n#ONT>system\n#ONT/system>manu\n#ONT/system/manu>internal_ip_en\n```"
  },
  {
    "path": "_ont/ont-nokia.md",
    "content": "---\ntitle: Nokia\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-odi-realtek-dfp-34g-2c2.md",
    "content": "---\ntitle: ODI Realtek DFP-34G-2C2 \ndescription: New model 2022 - v05\nhas_children: false\nlayout: default\nparent: ODI\n---\n\n# Hardware Specifications\n\n|              |                                   |\n| ------------ | --------------------------------- |\n| Vendor/Brand | ODI                               |\n| Model        | DFP-34G-2C2                       |\n| Chipset      | Realtek RTL9601D                  |\n| Flash        | 8 MB                              |\n| RAM          | 64 MB                             |\n| System       | Linux (Luna SDK 1.9)              |\n| HSGMII       | Yes                               |\n| Optics       | SC/UPC                            |\n| IP address   | 192.168.1.1                       |\n| Web Gui      | ✅ user `admin`, password `admin` |\n| SSH          | ✅ user `admin`, password `admin` |\n| Telnet       |                                   |\n| Serial       |                                   |\n| Form Factor  | miniONT SFP                       |\n\n{% include alert.html content=\"SSH uses an outdated set of algorithms/ciphers, you can connect using the following command:\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```shell\nssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oCiphers=+3des-cbc -oHostKeyAlgorithms=ssh-rsa admin@192.168.1.1\n```\n\n{% include image.html file=\"realtek-dfp-34g-2c2.jpg\" alt=\"ODI Realtek DFP-34X-C2C\" caption=\"ODI Realtek DFP-34X-C2C\" %}\n\n## List of firmwares and files\n- [Firmware repository by Anime4000](https://github.com/Anime4000/RTL960x/tree/main/Firmware/DFP-34X-2C2)\n\nThe recommended versions are `M114_sfp_ODI_Vlan_220414.tar`, `M114_sfp_ODI_hybrid_220527.tar` or `M114_sfp_ODI_hybrid_220916.tar`, as these have working VLAN translation.  \n\n## List of partitions\n \n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"boot\"          |\n| mtd1  | 00002000 | 00001000  | \"env\"           |\n| mtd2  | 00002000 | 00001000  | \"env2\"          |\n| mtd3  | 0003c000 | 00001000  | \"config\"        |\n| mtd4  | 0014c000 | 00001000  | \"k0\"            |\n| mtd5  | 00274000 | 00001000  | \"r0\"            |\n| mtd6  | 0014c000 | 00001000  | \"k1\"            |\n| mtd7  | 00274000 | 00001000  | \"r1\"            |\n| mtd8  | 00001000 | 00001000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00001000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00001000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00001000  | \"Partition_011\" |\n| mtd12 | 0014c000 | 00001000  | \"linux\"         |\n| mtd13 | 00274000 | 00001000  | \"rootfs\"        |\n\nThis stick supports dual boot. \n\n`k0` and `r0` respectively contain kernel and firmware of the first image, while `k1` and `r1` contain kernel and firmware of the second one.\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface: it's near the SFP header. TX, RX and ground pads need to be connected to a USB2TTL adapter supporting 3V3 logic.\n\n{% include image.html file=\"ont-odi-realtek-dfp-34x-2c2/ttl.jpg\"  alt=\"DFP-34X-2C2 TTL Connection\" caption=\"DFP-34X-2C2 TTL Connection\" %}\n{% include image.html file=\"ont-odi-realtek-dfp-34x-2c2/ttl-2.jpg\"  alt=\"DFP-34X-2C2 TTL Pin\" caption=\"DFP-34X-2C2 TTL Pin\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    flash='flash' \n    ploam='hex' \n    customSwVersionAlert=\"This needs either `OMCI_OLT_MODE` to be set to 3 and firmware version 220530 or 220923 as modded by @stich86 or, if you don't want to replace the installed firmware, set `OMCI_OLT_MODE` value to `21`. This will force the stick to use your own settings from the XML file, but this is a hack and causes sigsegv of `/bin/checkomci`.\" \n    speedLan='1234567' \n    omciOLT21='true'\n%}\n\n# Known Bugs\n\n- Auto-sensing mode to switch between SGMII/HiSGMII\n\n# Miscellaneous Links\n\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n- [Ditch ONU, use GPON SFP on Business Grade Router, Mikrotik/Ubiquiti/pfSense (Home Networking)](https://forum.lowyat.net/topic/4925452)\n- [For the new model ODI ZTE DFP-34X-C2C](/ont-odi-zte-dfp-34x-2c2)\n\n\n"
  },
  {
    "path": "_ont/ont-odi-realtek-dfp-34x-2c2.md",
    "content": "---\ntitle: ODI Realtek DFP-34X-2C2 \ndescription: New model 2022 - v05\nhas_children: false\nlayout: default\nparent: ODI\n---\n\n# Hardware Specifications\n\n|              |                                   |\n| ------------ | --------------------------------- |\n| Vendor/Brand | ODI                               |\n| Model        | DFP-34X-2C2                       |\n| Chipset      | Realtek RTL9601D                  |\n| Flash        | 8 MB                              |\n| RAM          | 64 MB                             |\n| System       | Linux (Luna SDK 1.9)              |\n| HSGMII       | Yes                               |\n| Optics       | SC/UPC(DFP-34X-2C2), SC/APC(DFP-34X-2C3)|\n| IP address   | 192.168.1.1                       |\n| Web Gui      | ✅ user `admin`, password `admin` |\n| SSH          | ✅ user `admin`, password `admin` |\n| Telnet       |                                   |\n| Serial       |                                   |\n| Form Factor  | miniONT SFP                       |\n\n{% include alert.html content=\"SSH uses an outdated set of algorithms/ciphers, you can connect using the following command:\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```shell\nssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oCiphers=+3des-cbc -o HostKeyAlgorithms=ssh-rsa admin@192.168.1.1\n```\n\n{% include image.html file=\"realtek-dfp-34x-2c2.jpg\" alt=\"ODI Realtek DFP-34X-C2C\" caption=\"ODI Realtek DFP-34X-C2C\" %}\n\n\n## List of software versions\n- V1.0-220923 (hybrid by @lanseyujie and @stich86)\n- V1.0-220817\n- V1.0-220530 (hybrid by @stich86)\n- V1.0-220414 (vlan working)\n- V1.0-220304\n- V1.0-210702\n\n## List of firmwares and files\n- [Firmware repository by Anime4000](https://github.com/Anime4000/RTL960x/tree/main/Firmware/DFP-34X-2C2)\n\nThe recommended versions are `M114_sfp_ODI_hybrid_220527.tar` or `M114_sfp_ODI_hybrid_220916.tar`, as these have working VLAN translation.  \n\n## List of partitions\n \n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"boot\"          |\n| mtd1  | 00002000 | 00001000  | \"env\"           |\n| mtd2  | 00002000 | 00001000  | \"env2\"          |\n| mtd3  | 0003c000 | 00001000  | \"config\"        |\n| mtd4  | 0014c000 | 00001000  | \"k0\"            |\n| mtd5  | 00274000 | 00001000  | \"r0\"            |\n| mtd6  | 0014c000 | 00001000  | \"k1\"            |\n| mtd7  | 00274000 | 00001000  | \"r1\"            |\n| mtd8  | 00001000 | 00001000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00001000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00001000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00001000  | \"Partition_011\" |\n| mtd12 | 0014c000 | 00001000  | \"linux\"         |\n| mtd13 | 00274000 | 00001000  | \"rootfs\"        |\n\nThis stick supports dual boot. \n\n`k0` and `r0` respectively contain kernel and firmware of the first image, while `k1` and `r1` contain kernel and firmware of the second one.\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface: it's near the SFP header. TX, RX and ground pads need to be connected to a USB2TTL adapter supporting 3V3 logic.\n\n{% include image.html file=\"ont-odi-realtek-dfp-34x-2c2/ttl.jpg\"  alt=\"DFP-34X-2C2 TTL Connection\" caption=\"DFP-34X-2C2 TTL Connection\" %}\n{% include image.html file=\"ont-odi-realtek-dfp-34x-2c2/ttl-2.jpg\"  alt=\"DFP-34X-2C2 TTL Pin\" caption=\"DFP-34X-2C2 TTL Pin\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    flash='flash'\n    ploam='hex'\n    customSwVersionAlert=\"This needs either `OMCI_OLT_MODE` to be set to 3 and firmware version 220530 or 220923 as modded by @stich86 or, if you don't want to replace the installed firmware, set `OMCI_OLT_MODE` value to `21`. This will force the stick to use your own settings from the XML file, but this is a hack and causes sigsegv of `/bin/checkomci`.\"\n    speedLan='1234567'\n    omciOLT21='true'\n%}\n\n# Known Bugs\n\n- Auto-sensing mode to switch between SGMII/HiSGMII\n\n# Miscellaneous Links\n\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n- [Ditch ONU, use GPON SFP on Business Grade Router, Mikrotik/Ubiquiti/pfSense (Home Networking)](https://forum.lowyat.net/topic/4925452)\n- [For the old model ODI ZTE DFP-34G-C2C](/ont-odi-zte-dfp-34g-2c2)\n\n\n"
  },
  {
    "path": "_ont/ont-odi-zte-dfp-34g-2c2.md",
    "content": "---\ntitle: ODI ZTE DFP-34G-2C2\ndescription: Old model 2020 - v04\nhas_children: false\nlayout: default\nparent: ODI\nalias: Usourcetech UGP-N1S\n---\n\n# Hardware Specifications\n\n|              |                                                 |\n| ------------ | ----------------------------------------------- |\n| Vendor/Brand | ODI                                             |\n| Model        | DFP-34G-2C2                                     |\n| CPU          | ZTE ZX279125                                    |\n| CPU Clock    | 600Mhz                                          |\n| Flash        | 16 MB                                           |\n| RAM          | 32 MB                                           |\n| System       | System ZTE Linux (based on Linux Kernel 2.6.32) |\n| HSGMII       | No                                              |\n| Optics       | SC/UPC                                          |\n| IP address   | 192.168.1.1                                     |\n| Web Gui      | ✅ user `admin`, password `admin`               |\n| SSH          |                                                 |\n| Telnet       | ✅ user `root`, password `Pon521`               |\n| Serial       |                                                 |\n| Form Factor  | miniONT SFP                                     |\n\n\n{% include image.html file=\"zte-dfp-34x-2c2.jpg\" alt=\"ODI ZTE DFP-34X-C2C\" caption=\"ODI ZTE DFP-34X-C2C\" %}\n{% include image.html file=\"zte-dfp-34x-2c2_teardown_1.jpg\" alt=\"ODI ZTE DFP-34X-C2C Teardown\" caption=\"ODI DFP-34X-C2C Teardown\" %}\n{% include image.html file=\"zte-dfp-34x-2c2_teardown_2.jpg\" alt=\"ODI ZTE DFP-34X-C2C Teardown\" caption=\"ODI DFP-34X-C2C Teardown\" %}\n\n## List of software versions\n- LX.X.V1.0.0\n\n## List of partitions\n \n| dev   | size     | erasesize | name             |\n| ----- | -------- | --------- | ---------------- |\n| mtd0  | 00800000 | 00001000  | \"whole flash\"    |\n| mtd1  | 00040000 | 00001000  | \"uboot\"          |\n| mtd2  | 00130000 | 00001000  | \"kernel0\"        |\n| mtd3  | 00130000 | 00001000  | \"kernel1\"        |\n| mtd4  | 00010000 | 00001000  | \"others\"         |\n| mtd5  | 00010000 | 00001000  | \"parameter tags\" |\n| mtd6  | 00060000 | 00001000  | \"usercfg\"        |\n| mtd7  | 00270000 | 00001000  | \"rootfs0\"        |\n| mtd8  | 00270000 | 00001000  | \"rootfs1\"        |\n\n\nThis stick supports dual boot. \n\n`kernel0` and `rootfs0` respectively contain kernel and firmware of the first image, while `kernel1` and `rootfs1` contain kernel and firmware of the second one\n\n# Miscellaneous Links\n\n- [GPON module Dfp-34g-2c2 sfp](https://forum.openwrt.org/t/gpon-module-dfp-34g-2c2-sfp/51641)\n- [Ditch ONU, use GPON SFP on Business Grade Router, Mikrotik/Ubiquiti/pfSense (Home Networking)](https://forum.lowyat.net/topic/4925452)\n- [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300)\n- [For the new model ODI Realtek DFP-34X-C2C](/ont-odi-realtek-dfp-34x-2c2)\n- [Usource GPON ONU STICK](https://www.usourcetech.com/web/userfiles/download/GPONSTICKSFPCLASSB-2B_Rev01.pdf)\n"
  },
  {
    "path": "_ont/ont-odi-zte-dfp-34x-2c2.md",
    "content": "---\ntitle: ODI ZTE DFP-34G-2C2\ndescription: Old model 2020 - v04\nhas_children: false\nlayout: default\nparent: ODI\nnav_exclude: true\nredirect_to: /ont-odi-zte-dfp-34g-2c2\n---"
  },
  {
    "path": "_ont/ont-odi.md",
    "content": "---\ntitle: ODI\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-sercomm-fg1000b-11.md",
    "content": "---\r\ntitle: Sercomm FG1000B.11s\r\nhas_children: false\r\nredirect_to: /ont-sercomm-fg1000b\r\nlayout: default\r\nparent: CIG\r\n---\r\n"
  },
  {
    "path": "_ont/ont-sercomm-fg1000b.md",
    "content": "---\ntitle: Sercomm FG1000B\nhas_children: false\nlayout: default\nparent: Sercomm\n---\n\n# Hardware Specifications\n\n|                 |                                                                     |\n| --------------- | ------------------------------------------------------------------- |\n| Vendor/Brand    | Sercomm                                                             |\n| Model           | FG1000B                                                             |\n| ODM             | ✅                                                                  |\n| Chipset         | BCM68360_B1                                                         |\n| Flash           | NAND 128 MB                                                         |\n| RAM             | 256 MB                                                              |\n| CPU             | Broadcom B53 Dual Core                                              |\n| CPU Clock       | 1500MHz                                                             |\n| Bootloader      | CFE                                                                 |\n| Load addr       | 0x80000                                                             |\n| 2.5GBaseT       | Yes                                                                 |\n| PHY Ethernet    | RTL8221B                                                            |\n| Optics          | LC/APC                                                              |\n| IP address      | 192.168.1.1/24 or 192.168.100.1/24 (depending on the derivate)      |\n| Web Gui         | ✅, login may be needed (depending on the derivate)                 |\n| SSH             | No                                                                  |\n| Telnet          | No                                                                  |\n| Serial          | ✅, only TX                                                         |\n| Serial baud     | 115200                                                              |\n| Serial encoding | 8-N-1                                                               |\n| Form Factor     | ONT                                                                 |\n\n\n{% include image.html file=\"fg1000b-11_rear.jpg\" alt=\"Sercomm FG1000B.11\" caption=\"Sercomm FG1000B.11 rear\" %}\n{% include image.html file=\"fg1000b-11_bottom.jpg\" alt=\"Sercomm FG1000B.11 bottom\" caption=\"Sercomm FG1000B.11 bottom\" %}\n{% include image.html file=\"fg1000b-11_side1.jpg\" alt=\"Sercomm FG1000B.11 side 1\" caption=\"Sercomm FG1000B.11 side 1\" %}\n{% include image.html file=\"fg1000b-11_side2.jpg\" alt=\"Sercomm FG1000B.11 side 2\" caption=\"Sercomm FG1000B.11 side 2\" %}\n\n## Serial\n\nSee side2 picture for pin identification, use 112500 8-N-1\nThe ONT seems to only display output of the ROM CFE and flash CFE, but doesn't seem to allow interrupting the boot.\n\n{% include serial_dump.html file=\"fg1000b-11_boot_cfe.txt\" alt=\"Sercomm FG1000B.11 CFE boot dump\" title=\"Sercomm FG1000B.11 CFE boot dump\" %}\n\n## Root procedure\n[See the enable telnet/ssh section](/ont-sercomm-fg1000b-11/#enable-telnetsshserial)\n\n## List of software versions\n\n| Firmware version | Firmware date | used by                       |\n| ---------------- | ------------- | ----------------------------- |\n| 090122.1.0.001   | 03.11.2022    | Vodafone (FG1000B.VF)         |\n| 090133.1.0.003   | 11.09.2023    | o2/Telefonica (FG1000B.O2)    |\n| 090144.1.0.001   |               | Deutsche Telekom (FG1000B.11) |\n| 090144.1.0.004   |               | Deutsche Telekom (FG1000B.11) |\n| 090144.1.0.006   |               | Deutsche Telekom (FG1000B.11) |\n| 090144.1.0.009   | 23.05.2025    | Deutsche Telekom (FG1000B.11) |\n\n\n## List of partitions\n`cat /proc/mtd`\n\n| dev:   | size     | erasesize | name                 |\n| ------ | -------- | --------- | -------------------- |\n| mtd0:  | 00200000 | 00020000  | \"CfeROM              |\n| mtd1:  | 00400000 | 00020000  | \"CfeRAM1             |\n| mtd2:  | 00400000 | 00020000  | \"CfeRAM2             |\n| mtd3:  | 000a0000 | 00020000  | \"FlashMAP            |\n| mtd4:  | 000a0000 | 00020000  | \"SN                  |\n| mtd5:  | 00140000 | 00020000  | \"Protect             |\n| mtd6:  | 01b80000 | 00020000  | \"Rootfs1             |\n| mtd7:  | 00c80000 | 00020000  | \"Lib1                |\n| mtd8:  | 01b80000 | 00020000  | \"Rootfs2             |\n| mtd9:  | 00c80000 | 00020000  | \"Lib2                |\n| mtd10: | 000a0000 | 00020000  | \"Bootflg             |\n| mtd11: | 000a0000 | 00020000  | \"Rootfs1_Info        |\n| mtd12: | 000a0000 | 00020000  | \"Lib1_Info           |\n| mtd13: | 000a0000 | 00020000  | \"Rootfs2_Info        |\n| mtd14: | 000a0000 | 00020000  | \"Lib2_Info           |\n| mtd15: | 00280000 | 00020000  | \"XMLConfig           |\n| mtd16: | 00280000 | 00020000  | \"Erasable_XML_CFG    |\n| mtd17: | 00960000 | 00020000  | \"AppData             |\n| mtd18: | 00140000 | 00020000  | \"Yaffs               |\n| mtd19: | 010c0000 | 00020000  | \"Reserve             |\n| mtd20: | 00930000 | 0001f000  | \"rootfs_ubifs        |\n| mtd21: | 0029bf98 | 0001f000  | \"filestruct_full.bin |\n| mtd22: | 003bd000 | 0001f000  | \"lib_squashfs        |\n\n# Useful files and binaries\n\n{% include alert.html content=\"NAND MTD5 mounted as  `/tmp/var_link_dir/ft` contains all serial numbers and the MAC address of the ONT, please consider backing it up before performing any hack, files are: `customer_sn,gpon_sn,hw_version,mac_addr,pcba_sn`\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"Calling the `board_init` binary directly or indirectly (via init script) when the board is already booted will cause NAND mtd 5, 15, 16 & 17 to be erased! \nPlease back them up before any hacking! Recovery is possible if you hardware reset the device, enable the telnet and recreate the `customer_sn, gpon_sn, hw_version, mac_addr, pcba_sn` file on the `/tmp/var_link_dir/ft` volume which can be remounted as R/W `mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft`.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n## Useful files\n* `/etc/framework_init.sh` - is the main entry for the launch of the Sercomm framework by `/etc/rcS`\n\n## Useful binaries\n* `pb_ap` - monitors the `reset button`. If the button is pushed for longer than 10s it resets the ONT to factory default, otherwise it only reboots the device - Run at startup - no args\n\n* `fw_image_ctl` - allows firmware upgrade, switch between `fw0` & `fw1`,reading firmware info, replicating between fw, deactivating image etc... - Options listed when called with no args\n\n* `cmld_client`- manipulates the configuration 'DB' stored in /dev/mtd15, its output is in the XML format. The root element is \"InternetGatewayDevice\". A final '.' dot is needed to list all sub-elements. Example to get the device's full XML config ```cmld_client get_node InternetGatewayDevice.```. Listed elements with `writable=\"1\"` can be changed with `set` and the node path. Elements marked as `dynamic=\"1\"` have their value evaluated at the time you specifically call get on that specific node, `cmld_client get  InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.Status` - The daemon is run at startup - options listed when called with no args\n\n* `cmd_agent` - strange daemon launched at startup during `/etc/rcS` that opens a `/tmp/cmd_client` sock file that listens to commands and executes them. - No args\n\n* `statd` - daemon launched at boot which collects monitoring data from the ONT. - No args\n\n* `ubusd` - ubusd is used to send message between processes, current ubus services are `cml,network-manager,smd`\n\n* `smd` - daemon in charge of launching the `/opt/` plugin for each of the ONT's service like: `init, gpon, iptv, temperature, account, http, lan, network, syslog, system`. All is done in code which does not help hacking the device.\n\n# Usage\n\n## Enabling telnet/SSH/serial\n\nThe code below can be pasted in the browser's console after opening `http://192.168.100.1` (default ONT's web UI). This will enable telnet as root with no password on the device (same can be done with `/usr/sbin/sshd` binary). The below hack uses an injection on the `eventlog_applog_download.json` page, the commands can be injected in the request body's `applog_select` parameter and they are executed as superadmin (root).\n```javascript\n// Fetch a non csrf protected page to get a csrf token\nawait fetch(\"http://192.168.100.1/setup.cgi?next_file=statusandsupport/status.html\").then(function (response) {\n\treturn response.text();\n}).then(function (html) {\n\t//inject the html response into a HTML DOM to parse it\n    var el = document.createElement( 'html' );\n    el.innerHTML = html;\n\t//The token is inserted into the first <script> tag of the page\n    var es = el.getElementsByTagName( 'script' );\n\tvar aText = es[0].text;\n\t//Add the csrf token in the document for other requests\n    document.csrf_token = aText.match(\"'(.*)'\")[1];\n}).catch(function (err) {\n\tconsole.warn('Something went wrong.', err);\n});\n\n//use the csrf token to activate telnet with no login and a shell\n\nfetch('http://192.168.100.1/data/statussupporteventlog_applog_download.json?_=1686211215966&csrf_token='+document.csrf_token, {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'\n  },\n  body: 'applog_select=a;echo \"#!/bin/sh\" > /tmp/slogin;echo \"export PATH=/bin:/sbin:/usr/bin:/usr/sbin\" >> /tmp/slogin;echo \"/bin/sh\" >> /tmp/slogin;/bin/chmod 755 /tmp/slogin;/usr/sbin/telnetd -l /tmp/slogin'\n})\n.then(res => res.json())\n.then(console.log)\n```\n\nThere is a way to make a script call at boot to ensure telnet or other services start at boot if needed. It uses a hack from libsl_system.so where there is a `system(...)` call using a String from config, string must be <=12 char. The system call is supposed to set set hostname of the device for storage sharing.\nIn the example below, a `/data/up` shell script would be created (ensure it has execute rights, such as: `chmod 755`).\n```\n#First we need to add the missing entry\n/usr/bin/cmld_client add InternetGatewayDevice.Services.StorageService. 1\n#Then inject within the 12 character limit the hostname and a call to our script\n/usr/bin/cmld_client set InternetGatewayDevice.Services.StorageService.1.X_SC_NetbiosName='a;/data/up&'\n/usr/bin/cmld_client save\n```\n\n## Logging configuration\n`syslogd` is configured via Config DB config `cmld_client get_node InternetGatewayDevice.X_SC_Management.Syslog.`. This config is read from the libsl_syslog.so plugin of smd daemon, which generates the `/tmp/lxxd/logd.conf` file and starts the daemon with it as parameter.\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n```\n/bin/gponctl getState\n``` \n\n## Getting OLT vendor information\n```\n/usr/sbin/umci_ctl stack get olt_type\n```\nor\n```\n/usr/sbin/umci_ctl rg help\n```\n\n## Querying a particular OMCI ME\n```\n/usr/sbin/umci_ctl mib\n```\n\n## Getting/Setting Speed LAN Mode\n\nThis has been tested on the Telekom Germany Model of the FG1000B and has brought the desired success of increasing \nthe pre-configured ethernet port speed (1G) to auto-negotiated 2.5G. This does not survive a reboot though.\n\n```\n/bin/ethctl eth0 media-type auto\n```\n\n# GPON/OMCI settings\n\nPart of GPON config is done via the misc configuration loaded as first lib by the smd binary, the config can be seen here:\n```\n/usr/bin/cmld_client get_node InternetGatewayDevice.X_SC_MiscCfg.GPON.\n```\nBe aware the fields `OmciManageUniMask`, `PretendFwVersion` are initiated in the binary with respective value `01000000`, `0`.\n\n## Getting/Setting ONU GPON Serial Number\nDefault value: 16 hex chars on the back of the ONT, starts with `53434F4DA`. The default S/N is the Modem-ID on the sticker.\nYou can test serial and/or ploam combinations using the command provided below. The password is Hex only and can be up to 36 characters long.\n```\n/bin/gponctl stop\n/bin/gponctl setSnPwd --pwd 00-00-0X-XX-XX-XX-XX-XX-XX-XX --sn YY-YY-YY-YY-YY-YY-YY-YY\n/bin/gponctl start\n```\n\nYou can monitor status by running:\n```\n/bin/gponctl getstate\n```\n\nTo save the serial number you need to re-mount `/tmp/var_link_dir/ft` as R/W and change the `gpon_sn` file (consider backing up of the folder before ANY action)\n```\n/bin/mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft\necho \"XXXXXXXXXXXXX\" > /tmp/var_link_dir/ft/gpon_sn\n/bin/mount -o remount,ro /dev/mtdblock5 /tmp/var_link_dir/ft\n/sbin/reboot\n```\n\n## Getting/Setting ONU GPON PLOAM password\n\nThe PLOAM password can be set directly as text or hex (without `0x`) via the Web interface if shorter than 10 digits, otherwise a POST call to the URL provided below allows passwords longer than 10 digits (max is 36 characters). \nFor example a 20-digit long hex password can be set with these commands:\n\n```\ncurl -i -s -k -X $'POST' -H $'Content-Type: application/x-www-form-urlencoded' \\\n    -H $'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \\\n    -d $'ploam_password=00000XXXXXXXXXXXXXXX' \\\n    $'http://192.168.100.1/ONT/client/data/Router.json'\n```\n\nOr via the CLI with:\n```\n/usr/bin/cmld_client set InternetGatewayDevice.WANDevice.1.X_SC_GponInterfaceConfig.X_SC_Password=00000XXXXXXXXXXXXXXX\n/usr/bin/cmld_client save\n```\n\n## Getting/Setting ONU GPON LOID and LOID password\n{% include alert.html content=\"Not tested but seems to be used by the misc config at smd init\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n```\n/usr/bin/cmld_client set InternetGatewayDevice.X_SC_MiscCfg.GPON.LoIdPassword=\n\n/usr/bin/cmld_client set InternetGatewayDevice.X_SC_MiscCfg.GPON.LoId=\n```\n\n## Getting/Setting OMCI software version (ME 7)\n{% include alert.html content=\"`get` works, `set` is not tested but seems to be used by the misc config at smd init\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n```\n/usr/bin/cmld_client get InternetGatewayDevice.X_SC_MiscCfg.GPON.OmciVersion\n```\nor via umci_ctl get/set tool (if the config overwrite OMCI or the other way around has not been tested)\n```\n/usr/sbin/umci_ctl mib get 7\n```\n\n## Getting/Setting OMCI hardware version (ME 256)\nDefault value: `Glasfaser.DTV1`\n```\n/bin/mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft\necho \"XXXXXXXXXXXXX\" > /tmp/var_link_dir/ft/hw_version\n/bin/mount -o remount,ro /dev/mtdblock5 /tmp/var_link_dir/ft\nreboot\n```\n## Getting/Setting OMCI vendor ID (ME 256)\nDefault value: `53434F4D`\n{% include alert.html content=\"The `set` command is available for `Class_id`, `Entity_id`, `Index` and `Value` parameters, but has not been tested.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n```\n/usr/sbin/umci_ctl mib get 256\n```\n\n## Getting/Setting OMCI equipment ID (ME 257)\n{% include alert.html content=\" The `set` command is available for `Class_id`, `Entity_id`, `Index` and `Value` parameters, but has not been tested.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n```\n/usr/sbin/umci_ctl mib get 257\n```\n\n# Advanced settings\n\n## Transferring files to the stick\nSince neither `netcat`/`nc` nor `ftp`/`sftp`/`ftps` are available, the best option is to use `curl` to download files from a webserver on your network over HTTP only.\nAdditionaly a full version of `busybox` for ARM can be added in the /data partition and then use `nc` to pipe data in and out of the device.\n\n## Backup of all partitions\n`dd` can be used, as it is available on the device/default busybox to backup the efull nand via `/dev/mtd`\n\n## Checking the currently active image\n```\n/usr/sbin/fw_ctl -s\n```\nThe output includes a `current running fw` line.\n\n## Booting to a different image\n```\n/usr/sbin/fw_ctl -c X\n```\nWhere `X` is <0|1|3> and sets commit image; 3 commits current firmware.\n\n## Cloning of image 0 into image 1\n```\n/usr/sbin/fw_ctl -r XXXX\n```\nWhere `XXX` is <fw|lib> copy type <fw|lib> from current firmware to backup firmware.\n\n## Setting management MAC\n```\n/bin/mount -o remount,rw /dev/mtdblock5 /tmp/var_link_dir/ft\necho \"A095XXXXXXXX\" > /tmp/var_link_dir/ft/mac_addr\n/bin/mount -o remount,ro /dev/mtdblock5 /tmp/var_link_dir/ft\n/sbin/reboot\n```\nThe format is 12 hex digit without any `0x` or `:`\n\n## Setting management IP\n```\n/usr/bin/cmld_client set InternetGatewayDevice.LANDevice.1.LANHostConfigManagement.IPInterface.1.IPInterfaceIPAddress=192.168.100.1\n/usr/bin/cmld_client save\n```\n\n## Rebooting the ONU\nEither via the public WebUi `http://192.168.100.1/ONT/client/html/content/config/problem_handling.html?lang=en`,  `Reboot` button or\n\n```\n/sbin/reboot\n```\n# Known Bugs\nIt seems `cmld_client get` can't return string values longer than 12 characters, even for field types mentioning string length. A walkaround is to use `get_node` on the parent element to get proper value ouput.\n\n# Miscellaneous Links\n\n- [FG1000B.11 - lafibre.info](https://lafibre.info/remplacer-bbox/test-glasfaser-modem-2-telekom-pour-remplacement-ont-2-5gbe-synchro-ok-ipv4-ok/)\n\n# Other brand names\n\n - 1&1 Glasfaser Modem (FG1000B.11)\n - o2 Glasfaser Modem (FG1000B O2)\n - Telekom Glasfaser Modem 2 (FG1000B.11)\n - Vodafone Glasfaser Modem (FG1000B.VF)\n\n# Credits\nThis whole documentation here was made possible thanks to the time invested into reverse engineering by @hwti and the rest of the folks from the forum mentioned in the links section of this page. Thanks a lot!\n\n"
  },
  {
    "path": "_ont/ont-sercomm-fg1000r.md",
    "content": "---\ntitle: Sercomm FG1000R\nhas_children: false\nlayout: default\nparent: Sercomm\n---\n\n# Hardware Specifications\n\n|                 |                        |\n| --------------- | ---------------------- |\n| Vendor/Brand    | Sercomm                |\n| Model           | FG1000R                |\n| ODM             | ✅                     |\n| Chipset         | RTL9602C               |\n| Flash           |                        |\n| RAM             |                        |\n| CPU             |                        |\n| CPU Clock       |                        |\n| Bootloader      |                        |\n| Load addr       |                        |\n| 2.5GBaseT       | ✅                    |\n| PHY Ethernet    |                        |\n| Optics          | LC/APC                 |\n| IP address      | 192.168.1.1            |\n| Web Gui         | ✅, User: Tech Password: ftth@! |\n| SSH             |                        |\n| Telnet          |                        |\n| Serial          | ✅                    |\n| Serial baud     |                        |\n| Serial encoding |                        |\n| Form Factor     | ONT                    |\n\n\n{% include image.html file=\"fg1000r_rear.jpg\" alt=\"Sercomm FG1000R\" caption=\"Sercomm FG1000R rear\" %}\n{% include image.html file=\"fg1000r_inside.jpg\" alt=\"Sercomm FG1000R inside\" caption=\"Sercomm FG1000R inside\" %}\n{% include image.html file=\"fg1000r_front.jpg\" alt=\"Sercomm FG1000R front\" caption=\"Sercomm FG1000R front\" %}\n{% include image.html file=\"fg1000r_device.jpg\" alt=\"Sercomm FG1000R device\" caption=\"Sercomm FG1000R device\" %}\n{% include image.html file=\"fg1000r_pon.jpg\" alt=\"Sercomm FG1000R PON\" caption=\"Sercomm FG1000R PON\" %}\n"
  },
  {
    "path": "_ont/ont-sercomm-fgs202.md",
    "content": "---\ntitle: Sercomm FGS202\nhas_children: false\nlayout: default\nparent: Sercomm\n---\n\n# Hardware Specifications\n\n|              |                                   |\n| ------------ | --------------------------------- |\n| Vendor/Brand | Sercomm                           |\n| Model        | FGS202                            |\n| Chipset      | Lantiq PEB98036                   |\n| Flash        | 8 MB                              |\n| RAM          | 32 MB                             |\n| System       | eCos                              |\n| HSGMII       | Yes                               |\n| Optics       | SC/APC                            |\n| IP address   | 169.254.199.139                   |\n| Web Gui      | No                                |\n| SSH          | No                                |\n| Telnet       | ✅ user `admin`, password `admin` |\n| Serial       | No                                |\n| Form Factor  | miniONT SFP                       |\n\n\n{% include image.html file=\"fgs202.jpg\" alt=\"Sercomm FGS202\" caption=\"Sercomm FGS202\" %}\n{% include image.html file=\"fgs202_teardown.jpg\" alt=\"Sercomm FGS202 teardown\" caption=\"Sercomm FGS202 teardown\" %}\n\n## Telnet Access\n\nThe stick has telnet available only on the PON side, the only way to access it is by using an OLT.\n\n## List of software versions\n- SCOMFGS202305 (TIM Italy)\n- SCOMFGS202304 (TIM Italy)\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\n```sh\n# show gpon\n\nPON STATUS      :O5\nLOS Times       :0\nConnect Time    :0 day 2 hour 29 min\nTX POWER        :2.97mW 4.73dBm\nRX POWER        :35.29uW -14.46dBm\nT-CONT\ntcont_idx       alloc_id        reg_egress_port pre_egress_port\n0               256             0               127\n8               0               127             63\nGEM TOTAL COUNT\ngem_port_id     gem_port_index  tx_frames       tx_bytes        rx_frames       rx_ bytes\n0               255             408             19584           365             17520\n145             1               44087           15072176        0               0\n4095            0               0               0               83591           20759980\n```\n\n## Querying a particular OMCI ME\n```sh\n# show me [cla_id][ins_id]\n# show me 7\nClass ID    = 7 (Software image)\nInstance ID = 0\nUpload      = yes\nAlarms      = -\n-------------------------------------------------------------------------------\n 0 Version                      14b STR  R------P---\n   0x53 0x43 0x4f 0x4d 0x46 0x47 0x53 0x32 0x30 0x32 0x33 0x30 0x34 0x00\n   SCOMFGS202304\\x00\n-------------------------------------------------------------------------------\n 1 Is committed                  1b UINT R----------\n   0x00 (0)\n-------------------------------------------------------------------------------\n 2 Is active                     1b UINT R----------\n   0x00 (0)\n-------------------------------------------------------------------------------\n 3 Is valid                      1b UINT R----------\n   0x01 (1)\n-------------------------------------------------------------------------------\nClass ID    = 7 (Software image)\nInstance ID = 1\nUpload      = yes\nAlarms      = -\n-------------------------------------------------------------------------------\n 0 Version                      14b STR  R------P---\n   0x53 0x43 0x4f 0x4d 0x46 0x47 0x53 0x32 0x30 0x32 0x33 0x30 0x35 0x00\n   SCOMFGS202305\\x00\n-------------------------------------------------------------------------------\n 1 Is committed                  1b UINT R----------\n   0x01 (1)\n-------------------------------------------------------------------------------\n 2 Is active                     1b UINT R----------\n   0x01 (1)\n-------------------------------------------------------------------------------\n 3 Is valid                      1b UINT R----------\n   0x01 (1)\n-------------------------------------------------------------------------------\n```\n\n# GPON/OMCI settings\n\n## Setting ONU GPON PLOAM password\n\n```sh\n# set gpon_password PASSWORD\nSet command exectue successfully.\n```\n\n# Advanced settings\n\n## Showing live OMCI messages\n\n```sh\n# show omci\n1970-01-01 02:34:53 ploam us: onu id - 0 / rei\nploam us|00 08 00 00 00 00 9b 00 00 00 00 00\n1970-01-01 02:34:53 ploam ds: onu id - 255 / UpstreamOverhead\nploam ds|ff 01 20 00 00 aa ab 59 83 20 00 00\n1970-01-01 02:34:53 ploam ds: onu id - 255 / UpstreamOverhead\n```\n\n# Hardware Modding\n\n- Pin 7 GND → VCC [Fibra.Click - FAQ: 2.5Gbps su singolo dispositivo su Tim, Vodafone, Fastweb/JustSpeed](https://forum.fibra.click/d/27574-faq-25gbps-su-singolo-dispositivo-su-timvodafonefastwebjustspeed/18)\n- Only for Ubiquiti [OpenWRT Forum - Support for GPON SFP](https://forum.openwrt.org/t/support-for-gpon-sfp-fgs202/42641/47)\n\n# Miscellaneous Links\n\n- [Support for GPON SFP FGS202](https://forum.openwrt.org/t/support-for-gpon-sfp-fgs202/42641/60)\n- [SerComm FGS202](https://wikidevi.wi-cat.ru/SerComm_FGS202)\n\n\n\n\n"
  },
  {
    "path": "_ont/ont-sercomm.md",
    "content": "---\ntitle: Sercomm\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-sourcephotonics-sps-34-24t-hp-tdfm.md",
    "content": "---\ntitle: SourcePhotonics SPS-34-24T-HP-TDFM\nhas_children: false\nlayout: default\nparent: SourcePhotonics\n---\n\n# Hardware Specifications\n\n|                    |                    |\n| ------------------ | ------------------ |\n| Vendor/Brand       | SourcePhotonics    |\n| Model              | SPS-34-24T-HP-TDFM |\n| ODM                | ✅                 |\n| Chipset            | Lantiq PEB98035    |\n| CPU                |                    |\n| CPU Clock          |                    |\n| Flash              |                    |\n| RAM                |                    |\n| Bootloader         |                    |\n| System             |                    |\n| Serial baud        |                    |\n| Load addr          |                    |\n| HSGMII             |                    |\n| Optics             | SC                 |\n| IP address         |                    |\n| Web Gui            |                    |\n| SSH                |                    |\n| Telnet             |                    |\n| Serial             |                    |\n| Form Factor        | miniONT SFP        |\n\n# Miscellaneous Links\n\n- [SourcePhotonics SPS-34-24T-HP-TDFM Datasheet](/assets/pdf/SPS-34-24T-HP-TDFM.pdf)"
  },
  {
    "path": "_ont/ont-sourcephotonics-sps-34-24t-hp-tdfo.md",
    "content": "---\ntitle: SourcePhotonics SPS-34-24T-HP-TDFO\nhas_children: false\nredirect_to: /ont-fs-com-gpon-onu-stick-with-mac\nlayout: default\nparent: SourcePhotonics\n---"
  },
  {
    "path": "_ont/ont-sourcephotonics.md",
    "content": "---\ntitle: SourcePhotonics\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-t-w-tw2362h-cdel.md",
    "content": "---\ntitle: T&W TW2362H-CDEL\nhas_children: false\nredirect_to: /ont-zisa-op151s\nlayout: default\nparent: T&W\n---"
  },
  {
    "path": "_ont/ont-t-w-twcgpon657.md",
    "content": "---\ntitle: T&W TWC GPON657\nhas_children: false\nlayout: default\nparent: T&W\n---\n\n# Hardware Specifications\n\n|                  |                                    |\n| ---------------- | ---------------------------------- |\n| Vendor/Brand     | T&W                                |\n| Model            | TWC GPON657                        |\n| ODM              | ✅                                 |\n| Chipset          | Realtek RTL9601CI                  |\n| Flash            | 16 MB                              |\n| RAM              | 64 MB                              |\n| System           | Linux (Luna SDK)                   |\n| HSGMII           | Yes                                |\n| Optics           | SC/APC                             |\n| IP address       |                                    |\n| Web Gui          | ✅ user `admin`, password `system` |\n| SSH              | ✅ user `admin`, password `system` |\n| Telnet           |                                    |\n| Serial           |                                    |\n| Form Factor      | miniONT SFP                        |\n\n## Firmware is interchangeable with:\n\n- [VSOL V2801F](/ont-vsol-v2801f)\n- [UFiber UF-Instant](/ont-ufiber-uf-instant) \n\n## List of firmwares and files\n\n- [Firmware repository by Anime4000](https://github.com/Anime4000/RTL960x/tree/main/Firmware/TWCGPON657)\n\nThe recommended version is `C00R657V2801F_V1.9.0-220404.tar`, because it is the V2801F firmware for T&W TWC GPON657.\n\n{% include_relative ont-luna-sdk-useful-commands.md \n    flash='flash'\n    ploam='ascii'\n    speedLan='123456'\n    customSpeedLanAlert='Please use recommended version `C00R657V2801F_V1.9.0-220404.tar`. It is not guaranteed that any value for `LAN_SDS_MODE` other than `1` will work with other firmware versions. Before editing the sync speed settings make sure your hardware supports it.'\n%}\n\n# Known Bugs\n\nVLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII\n\nYou should use the VID/VLAN shown by executing the command `omcicli mib get 84` via telnet to bring up PPPoE\n\n\n# Miscellaneous Links\n\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n- [forum lowyat](https://forum.lowyat.net/topic/4925452/+460)\n\n"
  },
  {
    "path": "_ont/ont-t-w.md",
    "content": "---\ntitle: T&W\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-technicolor-afm0002.md",
    "content": "---\ntitle: Vantiva AFM0002 (formerly Technicolor AFM0002) \nhas_children: false\nlayout: default\nparent: Vantiva (formerly Technicolor)\nalias: HiSense LTE3415-SCA+\n---\n\n# Hardware Specifications\n\n|                  |                                                 |\n| ---------------- | ----------------------------------------------- |\n| Vendor/Brand     | Vantiva (formerly Technicolor)                  |\n| Model            | AFM0002TIM/FWB/WND                              |\n| ODM              | HiSense                                         |\n| ODM Product Code | LTE3415-SCA+                                    |\n| Chipset          | Realtek RTL9601B                                |\n| Flash            | 32MB                                            |\n| RAM              | 16MB                                            |\n| System           | Linux (Luna SDK 1.9)                            |\n| HSGMII           | No                                              |\n| Optics           | SC/APC                                          |\n| IP address       | 192.168.2.1 / 169.0.0.1                         |\n| Web Gui          | Can be enabled, user `admin`, password `system` |\n| SSH              | ✅ user `admin`, password `system`              |\n| Telnet           |                                                 |\n| Serial           | ✅                                              |\n| Serial baud      | 115200                                          |\n| Serial encoding  | 8-N-1                                           |\n| Form Factor      | miniONT SFP                                     |\n| Multicast        | ✅                                              |\n\n{% include image.html file=\"afm0002tim.jpg\" alt=\"AFM0002TIM\" caption=\"AFM0002TIM\" %}\n{% include image.html file=\"afm0002fwb.jpg\" alt=\"AFM0002FWB\" caption=\"AFM0002FWB\" %}\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the stick's shield:\n\n{% include image.html file=\"ont-leox-lxt-010s-h_ttl.jpg\" alt=\"Vantiva (formerly Technicolor) AFM0002 TTL Pinout\" caption=\"Vantiva (formerly Technicolor) AFM0002 TTL Pinout\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## Hardware Revisions\n\n- AFM0002TIM (IP address: 192.168.2.1)\n- AFM0002FWB (IP address: 169.0.0.1)\n- AFM0002WND (IP address: 169.0.0.1)\n\n{% include alert.html content=\"The version used to obtain the info shown on this page is the AFM0002TIM\" alert=\"Info\"  icon=\"svg-info\" color=\"blue\" %}\n{% include alert.html content=\"The AFM0002FWB can be transformed into AFM0002TIM. Usually AFM0002FWBs have older software.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"red\" %}\n\n\n## List of software versions\n- V1.7.6-170626 (FWB & WND)\n- V1_7_8_180122 \n- V1_7_8_180725\n- V1_7_8_181123\n- V1_7_8_210412\n- V1_7_8_210928\n\n## List of partitions\n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"boot\"          |\n| mtd1  | 00002000 | 00001000  | \"env\"           |\n| mtd2  | 00002000 | 00001000  | \"env2\"          |\n| mtd3  | 0003c000 | 00001000  | \"config\"        |\n| mtd4  | 00300000 | 00001000  | \"k0\"            |\n| mtd5  | 004c0000 | 00001000  | \"r0\"            |\n| mtd6  | 00300000 | 00001000  | \"k1\"            |\n| mtd7  | 004c0000 | 00001000  | \"r1\"            |\n| mtd8  | 00001000 | 00001000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00001000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00001000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00001000  | \"Partition_011\" |\n| mtd12 | 00300000 | 00001000  | \"linux\"         |\n| mtd13 | 004c0000 | 00001000  | \"rootfs\"        |\n\nThis stick supports dual boot. \n\n`k0` and `r0` respectively contain kernel and firmware of the first image, while `k1` and `r1` contain kernel and firmware of the second one.\n\n{% include_relative ont-luna-sdk-useful-commands.md \n\tflash='/etc/scripts/flash'\n\tploam='ascii'\n\tlastgoodHs=true\n\tflashSwVersion=true \n\tcustomSwVersionAlert=\"This needs the `/etc/scripts/flash` modded\"\n\tcustomHwVersionAlert=\"This needs the `/etc/scripts/flash` modded\"\n\tcustomVendorAlert=\"This needs the `/etc/scripts/flash` modded\"\n\tcustomEquipAlert=\"This needs the `/etc/scripts/flash` modded\"\n%}\n\n## Enabling the Web UI\n```sh\n# /bin/iptables -D INPUT -p tcp --dport 80 -j DROP\n```\n\n## Transfering files from/to the stick\nWorks with binary files too, just run md5sum on source and destination to make sure you are not corrupting anything...\nFrom the stick to the PC:\n```sh\n# ssh admin@192.168.2.1 \"cat /tmp/omcilog\" > omcilog.log\n```\nFrom the PC to the stick:\n```sh\n# cat lastgood.xml | ssh admin@192.168.2.1  \"cat > /var/config/lastgood.xml\"\n```\n\n{% include alert.html content=\"If a Windows system is used replace type with cat and run the commands from cmd (not Powershell)\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n## Extracting and repacking the rootfs\n{% include alert.html content=\"Make sure you run both commands as root, otherwise you might get a damaged rootfs image\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n```sh\n# unsquashfs mtd5.bin\n# mksquashfs squashfs-root rootfs -b 131072 -comp lzma -no-recovery\n```\n## Flashing a new rootfs\n\n{% include alert.html content=\"Only the inactive image can be flashed, change sw_versionX and sw_commit X based on the bank you have flashed\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nFlash mtd4/5 if you are on image1, mtd6/7 if you are on image0.\n\nThe following commands are used to flash a new rootfs to image1 and then boot to it\n```sh\n# flash_eraseall /dev/mtd7\n# cat /tmp/rootfs.new > /dev/mtd7\n# nv setenv sw_version1 NEW_SOFTWARE_VERSION\n# nv setenv sw_commit 1\n# reboot\n```\n\n{% include alert.html content=\"This section is based on the `V1_7_8_210412` version of the stick's firmware \" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n## Adding support to configurable SW and HW versions, Vendor ID and equipment ID\n`/etc/scripts/flash` can be modified in order to add support for some variables implemented in `omci_app` but removed from `xmlconfig`. The modified file is below.\n\n`flash set` will still print an error but the change wil be persisted. You can check that by running the relative `flash get` command\n\n```sh\n#!/bin/ash\n#\n# usage: flash.sh [cmd] ...\n#\n\nDEFAULT_FILE=\"/etc/config_default.xml\"\nDEFAULT_HS_FILE=\"/etc/config_default_hs.xml\"\nLASTGOOD_FILE=\"/var/config/lastgood.xml\"\nLASTGOOD_HS_FILE=\"/var/config/lastgood_hs.xml\"\n\n# for array type in hw_setting\nspecific_mib_patten=\"(^HW(_|_WLAN0_|_WLAN1_)TX_POWER*)|(^HW_FON_KEYWORD$)\"\n\nrename_mib_patten=\"^HW_(NIC[0-1]|WLAN[0-1]_WLAN)_ADDR\"\nrename_mib_name=\"ELAN_MAC_ADDR\"\n\nhw_mib=\"^HW_|^SUPER_NAME$|^SUPER_PASSWORD$|^BOOT_MODE$|^ELAN_MAC_ADDR#|^WLAN_MAC_ADD$|^WAN_PHY_PORT$|^WIFI_SUPPORT$|^BYTE$|^WORD$|^DWORD$|^INT1$|^INT2$\"\nvar=\"\"\n\n\ncase \"$1\" in\n  \"all\")\n#  \techo \"------ [$1] Display all settings ------\"\n  \tif [ $# -eq 1 ] || [ \"$2\" = \"hs\" ]; then\n  \t\t/bin/xmlconfig -os -hs\n\tfi\n\tif [ $# -eq 1 ] || [ \"$2\" = \"cs\" ]; then\n\t        /bin/xmlconfig -os\n\tfi\n\texit 0\n  \t;;\n  \"default\")\n#  \techo \"------ [$1] Restore to default configurationg ------\"\n  \tif [ \"$2\" = \"cs\" ]; then\n\t\t/bin/xmlconfig -def_mib\n\t\t/bin/xmlconfig -if $DEFAULT_FILE -nodef && /bin/xmlconfig -of $LASTGOOD_FILE\n\t\techo \"Reset CS to default configuration success.\"\n\telif [ \"$2\" = \"hs\" ]; then\n\t\t/bin/xmlconfig -def_mib -hs\n\t\t/bin/xmlconfig -if $DEFAULT_HS_FILE -nodef && /bin/xmlconfig -of $LASTGOOD_HS_FILE\n\t\techo \"Reset HS to default configuration success.\"\n\telif [ \"$2\" = \"voip\" ]; then\n\t\t/bin/xmlconfig -def_voip_mib\n\t\t/bin/xmlconfig -of $LASTGOOD_FILE\n\t\techo \"Reset VoIP to default configuration success.\"\n\telse\n\t\techo \"Restore to default configurationg fail.\"\t\n\t\t/bin/sh $0 -h\n\t\texit 1\n\tfi\n\techo \"Please reboot system.\"\n\texit 0\n\t;;\n  \"get\" | \"gethw\")\n# \techo \"------ [$1] Get a specific mib parameter from flash memory. ------\"\n\tif [ \"$2\" != \"\" ]; then\n\t\tpara=$2\n\t\tif [ `echo $para | egrep $rename_mib_patten` ]; then\n\t\t\tpara=$rename_mib_name\n\t\tfi\n\t\t#echo \"/bin/xmlconfig -g $para\"\n\t\tif [ `echo $para | egrep $specific_mib_patten` ]; then\n\t\t\t/bin/xmlconfig -g $para | sed -r \"s/$rename_mib_name+/$2/g\" | sed -r \"s/,+//g\"\n\t\telse\n\t\t\tlocal_nv_getenv=`nv getenv $para`\n\t\t\tif [ -z \"${local_nv_getenv}\" ]; then\n\t\t\t\t/bin/xmlconfig -g $para | sed -r \"s/$rename_mib_name+/$2/g\"\n\t\t\telse\n\t\t\t\techo \"${local_nv_getenv}\" | sed -r \"s/$rename_mib_name+/$2/g\"\n\t\t\tfi\n\t\tfi\n\t\tif [ \"$?\" = \"0\" ]; then\n\t\t\texit 0\n\t\tfi\n\telse\n\t\t/bin/sh $0 -h\n\t\texit 1\n\tfi\n\t;;\n  \"set\" | \"sethw\")\n # \techo \"------ [$1] Set a specific mib parameter into flash memory. ------\"\n  \tif [ \"$2\" != \"\" ] && [ \"$3\" != \"\" ]; then\n\t\tpara=$2\n\t\tif [ `echo $para | egrep $rename_mib_patten` ]; then\n\t\t\t$para=$rename_mib_name\n\t\tfi\n\n\t\tif [ $# -eq 3 ]; then\n\t\t\tvar=$3\n\t\telse\n\t\t\twhile [ $# -ge 3 ]\n\t\t\tdo\n\t\t\t\t# for multiple decimal values: dec2hex and concatenate all setting value\n\t\t\t\tif [ \"$3\" = \"08\" ] || [ \"$3\" = \"09\" ]; then\n\t\t\t\t\t# 08 & 09 are not invalid octal number\n\t\t\t\t\tvar=$var$3\n\t\t\t\telse\n\t\t\t\t\tvar=$var`printf \"%02x\" $3`\n\t\t\t\tfi\n\n\t\t\t\tshift\n\t\t\t\tif [ $# -ge 3 ]; then var=$var\",\"; fi\n\t\t\tdone\n\t\tfi\n\t\t#echo \"/bin/xmlconfig -s $para $var\"\n\n\t\t/bin/xmlconfig -s $para $var | egrep \"[ERR]\"\n\t\tif [ $? == 0 ]; then\n\t\t\tnv setenv $para $var\n\t\telse\n\t\t\t# Clear the ovveride from nv if it is there since we wrote it to xmlconfig\n\t\t\tnv setenv $para\n\t\tfi\n\t\tif [ \"`echo $2 | egrep $hw_mib`\" = \"\" ]; then\n\t\t\t/bin/xmlconfig -of $LASTGOOD_FILE\n\t\tfi\n  \t\t/bin/xmlconfig -of -hs $LASTGOOD_HS_FILE && exit 0\n\telse\n\t\t/bin/sh $0 -h\n\t\texit 1\n\tfi\n\t;;\n  \"-h\")\n\t\techo 'Usage: flash.sh [cmd]'\n\t\techo 'cmd:'\n\t\techo '  all <cs/hs>               : Show all settings.'\n\t\techo '  default <cs/hs>           : Restore to default configuration.'\n\t\techo '  get MIB-NAME              : get a specific mib parameter from flash memory.'\n\t\techo '  set MIB-NAME MIB-VALUE    : set a specific mib parameter into flash memory.'\n\t\techo \n\t\techo '  Note: When set the MIB_ARRAY or MIB_VALUE overflowed,'\n\t\techo '        xmlconfig will truncate the redundant part.'\n\t\techo '        Take signed integer for example:'\n\t\techo '        1. Set value=-6442450944(0xfffffffe80000000),'\n\t\techo '           and get value=-2147483648(0x80000000)'\n\t\techo '        2. Set value=-2147483649(0xffffffff7fffffff),'\n\t\techo '           and get value=2147483647(0x7fffffff)'\n\t\techo '        3. Set value=2147483648(0x80000000),'\n\t\techo '           and get value=-2147483648(0x80000000)'\n\t\techo '        4. Set value=4294967296(0x100000000), and get value=0(0x0)'\n\t\techo \n\t;;\n  *)\n  \t/bin/sh $0 -h\n\t\texit 1\n\t;;\nesac\n\n```                        \n## Increasing the length of the software version from 13 to 14 characters\n`omci_app` has a 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)\n```\nJVhEWjAwNCUAAAAIAAgACAAAAAAAAAAAAAAAAAAAAABvbWNpX2FwcG9tY2lfYXBwH4sIAAAAAAAA\nAwMAAAAAAAAAAAAfiwgAAAAAAAADY2BoYGZgYFjh9Uq/aNcZQdXsOh3R5ktr/fd0sTEwcuTnJmfG\nJxYUYJVlZGAA0gCHsMK2QQAAAAAAAEQlWERaMDA0JQ==\n```\nSave it as `omci_app.xdelta.base64`, then run:\t\n```sh\n# base64 -d omci_app.xdelta.base64 > omci_app.xdelta\n# xdelta patch omci_app.xdelta bin/omci_app bin/omci_app.new\n# mv bin/omci_app.new bin/omci_app\n```\nFor reference, the patch changes the follwing section of the omci_app:\n```diff\n-00408c24 24 05 00 0e     li         a1,0xe\n+00408c24 24 05 00 0f     li         a1,0xf\n-00408cf0 24 05 00 0f     li         a1,0xe\n+00408cf0 24 05 00 0f     li         a1,0xf\n```\n(It's inside the function referencing the string `OMCI_SW_VER1`)\n\nThe original file md5sum is: `4aea2f72bacc11256b7e2c1583d2ad4f`\nThe patched file md5sum is: `da20327c4c002e4c27f82f6ee63dbc1a`\n\n## Enabling PLOAM logging\n\n```sh\n/etc/scripts/flash set OMCI_DBGLVL 1\n/etc/scripts/flash set OMCI_DBGLOGFILE 1\nreboot\n/bin/omcicli set logfile 1 ffffffff\n```\n1. The binary log will be placed inside: `/tmp/omcilog`\n2. You can convert it into a .pcap file using [omcilog2pcap](https://github.com/hack-gpon/omcilog2pcap)\n3. You can then open it with Wireshark by installing this OMCI plugin from [GitHub](https://github.com/hack-gpon/omci-wireshark-dissector)\n   \nIf 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\n\n# Known Bugs\n\n# Miscellaneous Links\n\n- [omcilog2pcap](https://github.com/hack-gpon/omcilog2pcap)\n"
  },
  {
    "path": "_ont/ont-technicolor-afm0003.md",
    "content": "---\ntitle: Vantiva AFM0003 (formerly Technicolor AFM0003)\nhas_children: false\nlayout: default\nparent: Vantiva (formerly Technicolor)\nalias: HiSense LTE3415-SH+\n---\n\n# Hardware Specifications\n\n|                  |                                                 |\n| ---------------- | ----------------------------------------------- |\n| Vendor/Brand     | Vantiva (formerly Technicolor)                  |\n| Model            | AFM0003TIM                                      |\n| ODM              | HiSense                                         |\n| ODM Product Code | LTE3415-SH+                                     |\n| Chipset          | Realtek RTL9601CI                               |\n| Flash            | 128MB                                           |\n| RAM              | 32MB                                            |\n| System           | Linux 2.6 (Luna SDK 1.9)                        |\n| HSGMII           | Yes, but not working with stock firmware        |\n| Optics           | SC/APC                                          |\n| IP address       | 192.168.2.1                                     |\n| Web Gui          | Can be enabled, user `admin`, password `system` |\n| SSH              | No                                              |\n| Telnet           | ✅                                              |\n| Form Factor      | miniONT SFP                                     |\n| Serial           | ✅                                              |\n| Serial baud      | 115200                                          |\n| Serial encoding  | 8-N-1                                           |\n| Multicast        | ✅                                              |\n\n{% include image.html file=\"afm0003tim.jpg\" alt=\"AFM0003TIM\" caption=\"AFM0003TIM\" %}\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the stick's shield:\n\n{% include image.html file=\"ont-leox-lxt-010s-h_ttl.jpg\" alt=\"Vantiva (formerly Technicolor) AFM0003 TTL Pinout\" caption=\"Vantiva (formerly Technicolor) AFM0003 TTL Pinout\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n# Hardware Revisions\n\n- AFM0003TIM (IP address: 192.168.2.1)\n \n# List of software versions\n- V1_7_8_220201\n \n# List of partitions \n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 000c0000 | 00020000  | \"boot\"          |\n| mtd1  | 00020000 | 00020000  | \"env\"           |\n| mtd2  | 00020000 | 00020000  | \"env2\"          |\n| mtd3  | 01800000 | 00020000  | \"config\"        |\n| mtd4  | 00800000 | 00020000  | \"k0\"            |\n| mtd5  | 02a40000 | 00020000  | \"r0\"            |\n| mtd6  | 00800000 | 00020000  | \"k1\"            |\n| mtd7  | 02a40000 | 00020000  | \"r1\"            |\n| mtd8  | 00001000 | 00020000  | \"Partition_008\" |\n| mtd9  | 00001000 | 00020000  | \"Partition_009\" |\n| mtd10 | 00001000 | 00020000  | \"Partition_010\" |\n| mtd11 | 00001000 | 00020000  | \"Partition_011\" |\n| mtd12 | 00800000 | 00020000  | \"linux\"         |\n| mtd13 | 02a40000 | 00020000  | \"rootfs\"        |\n\nThis stick supports dual boot. \n\n`k0` and `r0` respectively contain kernel and firmware of the first image, while `k1` and `r1` contain kernel and firmware of the second one.\n\n{% include_relative ont-luna-sdk-useful-commands.md\n    flash='/etc/scripts/flash'\n    ploam='ascii'\n    speedLan='123456'\n    customSpeedLanAlert='The default firmware does not allow modification of the `LAN_SDS_MODE` parameter. Using modded firmware is needed. Before editing the sync speed make sure your hardware supports it.'\n    lastgoodHs=true\n    flashSwVersion=true\n%}\n\n## Enabling the Web UI\n```sh\n# /bin/iptables -D INPUT -p tcp --dport 80 -j DROP\n```\n\n## Transfering files from/to the stick\nWorks with binary files too, just run md5sum on source and destination to make sure you are not corrupting anything...\nFrom the stick to the PC:\n```sh\n# tftp <IP>\ntftp> put <filename> <directory>\ntftp> q\n```\nFrom the PC to the stick:\n```sh\n# tftp <IP>\ntftp> get <filename>\ntftp> q\n```\n\n## Extracting and repacking the rootfs\n{% include alert.html content=\"Make sure you run both commands as root, otherwise you might get a damaged rootfs image\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n```sh\n# unsquashfs mtd5.bin\n# mksquashfs squashfs-root rootfs -b 131072 -comp lzma -no-recovery\n```\n## Flashing a new rootfs\n\n{% include alert.html content=\"Only the inactive image can be flashed, change sw_versionX and sw_commit X based on the bank you have flashed\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nFlash mtd4/5 if you are on image1, mtd6/7 if you are on image0.\n\nThe following commands are used to flash a new rootfs to image1 and then boot to it\n```sh\n# flash_eraseall /dev/mtd7\n# cat /tmp/rootfs.new > /dev/mtd7\n```\n\nIf you get this error on `cat` command\n```sh\n# cat /tmp/rootfs.new > /dev/mtd7\ncat: write error: Invalid Argument\n```\n\nUse this proceudre instead to write firmware back to mtd:\n```sh\n# flash_eraseall /dev/mtd7\n# cat /tmp/rootfs.new > /dev/mtdblock7\n```\n\nThen make new firmware bootable\n```sh\n# nv setenv sw_version1 NEW_SOFTWARE_VERSION\n# nv setenv sw_commit 1\n# reboot\n```\n\n# Miscellaneous Links\n\n- [omcilog2pcap](https://github.com/hack-gpon/omcilog2pcap)\n\n"
  },
  {
    "path": "_ont/ont-technicolor.md",
    "content": "---\ntitle: Vantiva (formerly Technicolor)\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-template.md",
    "content": "# Hardware Specifications\r\n\r\n|                  |                                         |\r\n| ---------------- | --------------------------------------- |\r\n| Vendor/Brand     |                                         |\r\n| Model            |                                         |\r\n| ODM              | ✅ or manufacter                        |\r\n| ODM Product Code | (only if ODM present)                   |\r\n| Chipset          |                                         |\r\n| Flash            |                                         |\r\n| RAM              |                                         |\r\n| CPU              |                                         |\r\n| CPU Clock        | (only if CPU present)                   |\r\n| Bootloader       |                                         |\r\n| System           |                                         |\r\n| Load addr        |                                         |\r\n| HSGMII           | Yes/No (only if miniONT SFP PHY)        |\r\n| 2.5GBaseX        | Yes/No (only if miniONT SFP MAC)        |\r\n| 2.5GBaseT        | Yes/No (only if ONT)                    |\r\n| XGMII/XSGMII     | Yes (only if miniONT SFP PHY)           |\r\n| 10GBaseX         | Yes/No (only if miniONT SFP MAC)        |\r\n| 10GBaseT         | Yes/No (only if ONT)                    |\r\n| 2.5/5/10GBaseT   | Yes/No (only if ONT multigig)           |\r\n| Optics           | SC/APC or SC/UPC                        |\r\n| IP address       |                                         |\r\n| Web Gui          | ✅ or note                              |\r\n| SSH              | ✅ user `admin`, password `admin` or No |\r\n| Telnet           | ✅ user `admin`, password `admin` or No |\r\n| Serial           | ✅ user `admin`, password `admin` or No |\r\n| Serial baud      | 115200                                  |\r\n| Serial encoding  | 8-N-1                                   |\r\n| Form Factor      | ONT or miniONT SFP                      |\r\n\r\n## Serial\r\n\r\n## Root procedure\r\n\r\n## Firmware is interchangeable with\r\n\r\n## List of software versions\r\n\r\n## List of partitions\r\n\r\n# Useful files and binaries\r\n\r\n## Useful files\r\n\r\n## Useful binaries\r\n\r\n# Usage\r\n\r\n## Enable telnet/SSH/serial\r\n\r\n# GPON ONU status\r\n\r\n## Getting the operational status of the ONU\r\n\r\n## Getting OLT vendor information\r\n\r\n## Querying a particular OMCI ME\r\n\r\n## Getting/Setting Speed LAN Mode\r\n\r\n# GPON/OMCI settings\r\n\r\n## Getting/Setting ONU GPON Serial Number\r\n\r\n## Getting/Setting ONU GPON PLOAM password\r\n\r\n## Getting/Setting ONU GPON LOID and LOID password\r\n\r\n## Getting/Setting OMCI software version (ME 7)\r\n\r\n## Getting/Setting OMCI hardware version (ME 256)\r\n\r\n## Getting/Setting OMCI vendor ID (ME 256)\r\n\r\n## Getting/Setting OMCI equipment ID (ME 257)\r\n\r\n# Advanced settings\r\n\r\n## Transferring files to the stick\r\n\r\n## Backing up all partitions\r\n\r\n## Checking the currently active image\r\n\r\n## Booting to a different image\r\n\r\n## Cloning of image 0 into image 1\r\n\r\n## Setting management MAC\r\n\r\n## Setting management IP\r\n\r\n## Rebooting the ONU\r\n\r\n## Creating a new rootfs\r\n\r\n## Flashing a new rootfs\r\n\r\n## Enabling the Web UI\r\n\r\n# SFP EEPROM settings\r\n\r\n## Reading all EEPROM\r\n\r\n# EEPROM (I2C slave simulated EEPROM)\r\n\r\n## EEPROM0 layout\r\n\r\n## EEPROM1 layout\r\n\r\n# Random notes\r\n\r\n# Known Bugs\r\n\r\n# Miscellaneous Links\r\n\r\n# Theardown and other photos\r\n"
  },
  {
    "path": "_ont/ont-tplink-xz000-g3.md",
    "content": "---\ntitle: TP-Link XZ000-G3\nhas_children: false\nlayout: default\nparent: TP-Link\n---\n\n# Hardware Specifications\n\n|              |                                       |\n| ------------ | ------------------------------------- |\n| Vendor/Brand | TP-Link                               |\n| Model        | XZ000-G3                              |\n| Chipset      | EcoNet EN751221                       |\n| CPU          | MIPS32 34Kc                           |\n| Flash        | 4 MB                                  |\n| RAM          | 60792 kB                              |\n| System       | TCLinux                               |\n| HSGMII       | No                                    |\n| Optics       | SC/APC                                |\n| IP address   | 192.168.1.1                           |\n| Web Gui      | ✅ username `admin`, password `admin` |\n| SSH          |                                       |\n| Telnet       |                                       |\n| Serial       |                                       |\n| Form Factor  | ONT                                   |\n\n# Known Bugs\n\nThe ONT randomly crashes when a PPPoE connection by a connected router is established.\n\nThe GPON serial sometimes temporarily disappears after a crash, preventing the ONT from reaching the O5 operational status.\n\n"
  },
  {
    "path": "_ont/ont-tplink.md",
    "content": "---\ntitle: TP-Link\nhas_children: true\nlayout: default\n---\n\n"
  },
  {
    "path": "_ont/ont-ufiber-uf-instant.md",
    "content": "---\ntitle: UFiber UF-Instant\nhas_children: false\nlayout: default\nparent: UFiber\n---\n\n# Hardware Specifications\n\n|              |                   |\n| ------------ | ----------------- |\n| Vendor/Brand | UFiber            |\n| Model        | UFiber UF-Instant |\n| Chipset      | Realtek RTL9601CI |\n| Flash        | 16 MB             |\n| RAM          | 64 MB             |\n| System       | Linux (Luna SDK)  |\n| HSGMII       | No                |\n| Optics       | SC/APC            |\n| IP address   |                   |\n| Web Gui      | ✅                |\n| SSH          | ✅                |\n| Telnet       |                   |\n| Serial       |                   |\n| Form Factor  | miniONT SFP       |\n\n## Firmware is interchangeable with:\n\n{% include alert.html content=\"The UFiber UF-Instant can be used as universal GPON stick with V2801F rootfs, but only with stock UF kernel (4.3.1/4.4.2): needed for Laser controller.\" alert=\"Info\"  icon=\"svg-info\" color=\"blue\" %}\n\n\n- [VSOL V2801F](/ont-vsol-v2801f)\n- [T&W TWC GPON657](/ont-t-w-twcgpon657)\n\n## List of partitions\n\n| dev  | size     | erasesize | name     |\n| ---- | -------- | --------- | -------- |\n| mtd0 | 00040000 | 00001000  | \"boot\"   |\n| mtd1 | 00002000 | 00001000  | \"env\"    |\n| mtd2 | 00002000 | 00001000  | \"env2\"   |\n| mtd3 | 0003c000 | 00001000  | \"config\" |\n| mtd4 | 00300000 | 00001000  | \"k0\"     |\n| mtd5 | 004b0000 | 00001000  | \"r0\"     |\n| mtd6 | 00300000 | 00001000  | \"k1\"     |\n| mtd7 | 004b0000 | 00001000  | \"r1\"     |\n| mtd8 | 00010000 | 00001000  | \"hw\"     |\n| mtd9 | 00010000 | 00001000  | \"sec\"    |\n\n# Know Bugs\n\nVLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII\n\nYou should use the VID/VLAN shown by executing the command `omcicli mib get 84` via telnet to bring up PPPoE\n\n\n# Miscellaneous Links\n\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n- [UF INstant Mod](https://github.com/stich86/UF-Instant-Mod)\n- [SFP GPON ONU](https://github.com/zry98/SFP-GPON-ONU)\n- [UFiber.Configurator](https://github.com/Unifi-Tools/UFiber.Configurator)\n"
  },
  {
    "path": "_ont/ont-ufiber-uf-loco.md",
    "content": "---\ntitle: UFiber Loco\nhas_children: false\nlayout: default\nparent: UFiber\n---\n\n{% include alert.html content=\"This device is designed to be used with the Ubiquiti Fiber OLT. Third-party OLTs may be incompatible or may not reliably connect to the ONU.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n# Hardware Specifications\n\n|              |                                          |\n| ------------ | ---------------------------------------- |\n| Vendor/Brand | UFiber                                   |\n| Model        | UF-LOCO                                  |\n| Chipset      |                                          |\n| Flash        |                                          |\n| RAM          |                                          |\n| System       |                                          |\n| Optics       | SC/APC                                   |\n| IP address   |                                          |\n| Web Gui      | ✅                                       |\n| SSH          |                                          |\n| Telnet       | ✅                                       |\n| Serial       |                                          |\n| Form Factor  | ONT                                      |\n\n## Serial\n\n## Root procedure\n\n## Firmware is interchangeable with\n\n## List of software versions\n\n## Miscellaneous Links\n\n- [Ubiquiti Store Page](https://store.ui.com/us/en/category/fiber-gpon/products/ufiber-loco)\n- [Installation Guide](https://ui.com/qig/uf-loco)\n"
  },
  {
    "path": "_ont/ont-ufiber-uf-nano.md",
    "content": "---\ntitle: UFiber Nano\nhas_children: false\nlayout: default\nparent: UFiber\n---\n\n{% include alert.html content=\"This device is designed to be used with the Ubiquiti Fiber OLT. Third-party OLTs may be incompatible or may not reliably connect to the ONU.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n# Hardware Specifications\n\n|              |                                          |\n| ------------ | ---------------------------------------- |\n| Vendor/Brand | UFiber                                   |\n| Model        | UF-Nano                                  |\n| Chipset      |                                          |\n| Flash        |                                          |\n| RAM          |                                          |\n| System       |                                          |\n| Optics       | SC/APC                                   |\n| IP address   |                                          |\n| Web Gui      | ✅                                       |\n| SSH          |                                          |\n| Telnet       | ✅                                       |\n| Serial       |                                          |\n| Form Factor  | ONT                                      |\n\n## Serial\n\n## Root procedure\n\n## Firmware is interchangeable with\n\n## List of software versions\n\n## Miscellaneous Links\n\n- [Ubiquiti Store Page](https://store.ui.com/us/en/category/fiber-gpon/products/uf-nano)\n- [Installation Guide](https://ui.com/qig/uf-nano)\n"
  },
  {
    "path": "_ont/ont-ufiber-wave-fiber-onu.md",
    "content": "---\ntitle: UFiber WaveFiber ONU\nhas_children: false\nlayout: default\nparent: UFiber\n---\n\n# Hardware Specifications\n\n|              |                                          |\n| ------------ | ---------------------------------------- |\n| Vendor/Brand | UFiber                                   |\n| Model        | WaveFiber ONU                            |\n| Chipset      |                                          |\n| Flash        |                                          |\n| RAM          |                                          |\n| System       |                                          |\n| 2.5GBaseT    | Yes                                      |\n| Optics       | SC/APC                                   |\n| IP address   |                                          |\n| Web Gui      | ✅                                       |\n| SSH          |                                          |\n| Telnet       | ✅                                       |\n| Serial       |                                          |\n| Form Factor  | ONT                                      |\n\n## Serial\n\n## Root procedure\n\n## Firmware is interchangeable with\n\n## List of software versions\n\n## Miscellaneous Links\n\n- [Ubiquiti Store Page](https://store.ui.com/us/en/category/fiber-gpon/products/wave-fiber-onu)\n- [Installation Guide](https://dl.ui.com/qig/wave-fiber-onu/#index)\n"
  },
  {
    "path": "_ont/ont-ufiber.md",
    "content": "---\ntitle: UFiber\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont/ont-uplink-gp502r.md",
    "content": "---\ntitle: Uplink GP502R\nhas_children: false\nredirect_to: /ont-vsol-v2802rh\nlayout: default\nparent: Uplink\n---"
  },
  {
    "path": "_ont/ont-uplink.md",
    "content": "---\ntitle: Uplink \nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-vsol-v2801f.md",
    "content": "---\ntitle: V-SOL V2801F\nhas_children: false\nlayout: default\nparent: V-SOL\n---\n\n# Hardware Specifications\n\n|              |                                       |\n| ------------ | ------------------------------------- |\n| Vendor/Brand | V-SOL                                 |\n| Model        | V2801F                                |\n| Chipset      | Realtek RTL9601CI                     |\n| Flash        | 8 MB                                  |\n| RAM          | 64 MB                                 |\n| System       | Linux (Luna SDK)                      |\n| HSGMII       | No                                    |\n| Optics       | SC/APC                                |\n| IP address   |                                       |\n| Web Gui      | ✅ user `admin`, password `stdONU101` |\n| SSH          | ✅ user `admin`, password `stdONU101` |\n| Telnet       |                                       |\n| Serial       |                                       |\n| Form Factor  | miniONT SFP                           |\n\n## Firmware is interchangeable with:\n\n- [T&W TWC GPON657](/ont-t-w-twcgpon657)\n- [UFiber UF-Instant](/ont-ufiber-uf-instant) \n\n## List of firmwares and files\n\n- [Firmware repository by Anime4000](https://github.com/Anime4000/RTL960x/tree/main/Firmware/V2801F)\n\nThe recommended version is `V2801F_V1.9.0-220425.tar` because it has a modern WebGUI, 2.5GbE support, patched `runlansds.sh`, `tftpd` and more.\n\n{% include_relative ont-luna-sdk-useful-commands.md\n    flash='flash'\n    ploam='ascii'\n    speedLan='123456'\n    customSpeedLanAlert='Please use recommended version `V2801F_V1.9.0-220425.tar`. It is not guaranteed that any value for `LAN_SDS_MODE` other than `1` will work with other firmware versions. Before editing the sync speed make sure your hardware supports it.'\n%}\n\n# Known Bugs\n\nVLAN swap issue (MEID 171), auto-sensing mode to switch between SGMII/HiSGMII\n\nYou should use the VID/VLAN shown by executing the command `omcicli mib get 84` via telnet to bring up PPPoE\n\n# Miscellaneous Links\n\n- [Hacking RTL960x](https://github.com/Anime4000/RTL960x)\n- [SFP GPON ONU](https://github.com/zry98/SFP-GPON-ONU)\n- [forum lowyat](https://forum.lowyat.net/topic/4925452/+460)\n"
  },
  {
    "path": "_ont/ont-vsol-v2801q.md",
    "content": "---\ntitle: V-SOL V2802Q\nhas_children: false\nlayout: default\nparent: V-SOL\n---\n\n# Hardware Specifications\n\n|              |                                                                       |\n| ------------ | --------------------------------------------------------------------- |\n| Vendor/Brand | V-SOL                                                                 |\n| Model        | V2802Q                                                                |\n| Chipset      | Realtek RTL9601D                                                      |\n| Flash        |                         |\n| RAM          |                                                                  |\n| System       | Linux (Luna SDK)                                                      |\n| HSGMII       | Yes                                                                   |\n| Optics       | SC/UPC                                                                |\n| IP address   |                                                                       |\n| Web Gui      | ✅ user `user`, password `user` or user `admin`, password `stdONUi0i` |\n| Telnet       | ✅                                                                    |\n| Serial       |                                                                       |\n| Form Factor  | ONT                                                                   |\n\n## List of firmwares and files\n\n\n\n# Miscellaneous Links\n\n"
  },
  {
    "path": "_ont/ont-vsol-v2802rh.md",
    "content": "---\ntitle: V-SOL V2802RH\nhas_children: false\nlayout: default\nparent: V-SOL\n---\n\n# Hardware Specifications\n\n|              |                                                                       |\n| ------------ | --------------------------------------------------------------------- |\n| Vendor/Brand | V-SOL                                                                 |\n| Model        | V2802RH                                                               |\n| Chipset      | Realtek RTL9601D                                                      |\n| Flash        | ZB25VQ32BSIG - Zbit Semi 32 Mbit SPI NOR Flash                        |\n| RAM          | 64 MB                                                                 |\n| System       | Linux (Luna SDK)                                                      |\n| HSGMII       | Yes                                                                   |\n| Optics       | SC/UPC                                                                |\n| IP address   |                                                                       |\n| Web Gui      | ✅ user `user`, password `user` or user `admin`, password `stdONUi0i` |\n| Telnet       | ✅                                                                    |\n| Serial       |                                                                       |\n| Form Factor  | ONT                                                                   |\n\n## List of firmwares and files\n\n- [V-SOL V2802RH | O3 Labs](https://www.tripleoxygen.net/wiki/ont/vsol/v2802rh)\n\n# Miscellaneous Links\n\n- [V-SOL V2802RH | O3 Labs](https://www.tripleoxygen.net/wiki/ont/vsol/v2802rh)\n- [VSOL V2802RH teardown and full dump](https://github.com/Anime4000/RTL960x/discussions/179)\n- [Tutorial como substituir modem fibra FTTH do provedor pelo modem VSOL V2802RH](https://viniciuspaes.com/redes/tutorial-substituir-modem-fibra-ftth-modem-vsol-v2802rh/)\n"
  },
  {
    "path": "_ont/ont-vsol.md",
    "content": "---\ntitle: V-SOL\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont/ont-yotc-m2-2050-g40.md",
    "content": "---\ntitle: YOTC M2-2050-G40\nhas_children: false\nlayout: default\nparent: YOTC\n---\n\n# Hardware Specifications\n\n|                 |                                                                        |\n| --------------- | ---------------------------------------------------------------------- |\n| Vendor/Brand    | YOTC                                                                   |\n| Model           | M2-2050-G40                                                            |\n| Chipset         | Realtek RTL9607C / RTL9607Cv2                                          |\n| Flash           | SPI NAND 128MB                                                         |\n| RAM             | 256MB                                                                  |\n| CPU             | Formosa MIPS interAptiv (multi) V2.0                                   |\n| CPU Clock       | 900MHz / 1150MHz                                                       |\n| BogoMIPS        | 597.60MHz / 766.77MHz                                                  |\n| System          | Linux 4.4.140 (GCC Realtek MSDK-4.8.5p1 Build 3068)                    |\n| Ethernet ports  | 2x1G                                                                   |\n| Optics          | SC/APC                                                                 |\n| IP address      | 192.168.1.1 or 192.168.8.1                                             |\n| Web Gui         | ✅ user `super`, password `opticalink` OR user `User`, password `User` |\n| Telnet          | ✅ user `super`, password `opticalink` OR user `User`, password `User` |\n| SSH             | NO                                                                     |\n| Serial baud     | 115200                                                                 |\n| Serial encoding | 8-N-1                                                                  |\n| Form Factor     | ONT                                                                    |\n\n\n{% include image.html file=\"yotc-m2-2050-g40-top.jpg\" alt=\"YOTC M2-2050-G40 Top\" caption=\"YOTC M2-2050-G40 Top\" %} \n{% include image.html file=\"yotc-m2-2050-g40-bottom.jpg\" alt=\"YOTC M2-2050-G40 Bottom\" caption=\"YOTC M2-2050-G40 Bottom\" %}\n{% include image.html file=\"yotc-m2-2050-g40-pcb-top.jpg\" alt=\"YOTC M2-2050-G40 PCB Top\" caption=\"YOTC M2-2050-G40 PCB Top\" %}\n{% include image.html file=\"yotc-m2-2050-g40-pcb.jpg\" alt=\"YOTC M2-2050-G40 PCB Bottom\" caption=\"YOTC M2-2050-G40 PCB Bottom\" %}\n\n# Serial\n\n{% include image.html file=\"yotc-m2-2050-g40-ttl.jpg\" alt=\"Serial Pinout (dont connect vcc)\" caption=\"Serial Pinout (dont connect vcc)\" %}\n\n{% include serial_dump.html file=\"yotcm2-2050-g40.txt\" alt=\"M2-2050-G40 boot dump\" title=\"M2-2050-G40 boot dump\" %}\n\n{% include serial_dump.html file=\"yotcm2-2050-g40newrevision.txt\" alt=\"M2-2050-G40 boot dump (newer revision)\" title=\"M2-2050-G40 boot dump (newer revision)\" %}\n\n\n## List of Software versions\n- 518_V300R02B15 (doesn't have upg_app, wget, wget_manage)\n- 518_V300R02B21\n- 518_V300R02B22\n- 518_V300R02B25\n- 518_V300R02B31\n\n## List of partitions (MTD)\n\n| dev   | size     | erasesize | name          |\n| ----- | -------- | --------- | ------------- |\n| mtd0  | 000c0000 | 00020000  | \"boot\"        |\n| mtd1  | 00020000 | 00020000  | \"env\"         |\n| mtd2  | 00020000 | 00020000  | \"env2\"        |\n| mtd3  | 00020000 | 00020000  | \"static_conf\" |\n| mtd4  | 07c60000 | 00020000  | \"ubi_device\"  |\n| mtd5  | 0081d000 | 0001f000  | \"ubi_Config\"  |\n| mtd6  | 00516000 | 0001f000  | \"ubi_k0\"      |\n| mtd7  | 0141a000 | 0001f000  | \"ubi_r0\"      |\n| mtd8  | 00516000 | 0001f000  | \"ubi_k1\"      |\n| mtd9  | 0141a000 | 0001f000  | \"ubi_r1\"      |\n\n## List of volumes (UBI)\n\n| dev    | size       | type    | name         |\n| ------ | ---------- | ------- | ------------ |\n| ubi0_0 | 8507392B   | dynamic | \"ubi_Config\" |\n| ubi0_1 | 5332992B   | dynamic | \"ubi_k0\"     |\n| ubi0_2 | 21078016B  | dynamic | \"ubi_r0\"     |\n| ubi0_3 | 5332992B   | dynamic | \"ubi_k1\"     |\n| ubi0_4 | 21078016B  | dynamic | \"ubi_r1\"     |\n\n\nTo back up a volume, `cat` the appropriate `/dev/ubi0_X` device to a file or pipe, to restore a volume, use the `ubiupdatevol` utility.\n\nThis ONT supports dual boot.\n\nVolumes `ubi_k0` and `ubi_r0` respectively contain kernel and rootfs of the first image, while `ubi_k1` and `ubi_r1` contain kernel and rootfs of the second one.\n\n# Useful files and binaries\n\n## Useful files\n\nUser Configuration:\n```\n/var/config/config.xml\n```\n\nCustom Default Configuration:\n```\n/var/config/config_custom_default.xml\n```\n\nCustom Configuration (on reset):\n```\n/var/config/custom_config.sh\n```\n\nHardware Configuration:\n```\n/var/config/config_hs.xml\n```\n\n# GPON/OMCI settings\n\n## Set OMCI mode to customized so versions don't reset\n```\nmib set OMCI_OLT_MODE 3\n```\n\n## Setting OMCI software version (ME 7)\n```\nmib set OMCI_SW_VER1 YOURSWVER\nmib set OMCI_SW_VER2 YOURSWVER\n```\n\n## Setting OMCI vendor ID (ME 256)\n```\nmib set PON_VENDOR_ID VEND\n```\n\n## Setting ONU GPON Serial Number\n```\nmib set GPON_SN VEND1234ABCD\n```\n\n## Setting OMCI hardware version (ME 256)\n```\nmib set HW_HWVER YOURHWVER\n```\n\n## Setting OMCC version (ME 257), only accepts decimal values.\n```\nmib set OMCC_VER 128\n```\n\n## Setting Product Code (ME 257), only accepts decimal values.\n```\nmib set OMCI_VENDOR_PRODUCT_CODE 0\n```\n\n## Setting OMCI equipment ID (ME 257)\n```\nmib set GPON_ONU_MODEL YOUREQUIPMENTID\n```\n\n## Setting VEIP slot ID (example for 255), only accepts decimal values.\n```\nmib set OMCI_VEIP_SLOT_ID 255\n```\n\n## Commit Changes.\n```\nmib commit\n```\n\n\n# Verification commands for settings changed above (all settings take a reboot to apply)\n\n## Verify SwVer (ME 7)\n```\nomcicli mib get 7\n```\n\n## Verify Vendor ID, HwVer, and G984 Serial (ME 256)\n```\nomcicli mib get 256\n```\n\n## Verify OMCC version, Equipment ID and Product Code (ME 257)\n```\nomcicli mib get 257\n```\n\n## Verify VEIP customized slot ID (ME 329)\n```\nomcicli mib get 329\n```\n\n\n# Advanced Settings\n\n## Setting management MAC\n```\nmib set ELAN_MAC_ADDR 1A2B3C4D5E6F\n```\n\n## Setting management IP\n```\nmib set LAN_IP_ADDR 192.168.8.1\n```\n## Switch PON Mode\n```\n# GPON mode\nmib set PON_MODE 1\n```\n\n```\n# EPON mode\nmib set PON_MODE 2\n```\n\n```\n# Ethernet mode\nmib set PON_MODE 3\n```\n\n## Checking the currently active image\n```\nnv getenv sw_active\n```\n\n## Booting to a different image\n```\n# Switch to image 0\nnv setenv sw_commit 0\nnv setenv sw_tryactive 0\n```\n\n```\n# Switch to image 1\nnv setenv sw_commit 1\nnv setenv sw_tryactive 1\n```\n\n## Cloning of image 0 into image 1\n```\ncp /dev/ubi0_1 /tmp/\ncp /dev/ubi0_2 /tmp/\nubiupdatevol /dev/ubi0_3 /tmp/ubi0_1\nubiupdatevol /dev/ubi0_4 /tmp/ubi0_2\n```\n\n## Rebooting the ONU\n```\nreboot\n```\n\n## Enable Ethernet Ports\n```\nmib set SW_PORT_TBL.0.Enable 1\nmib set SW_PORT_TBL.1.Enable 1\nmib set SW_PORT_TBL.2.Enable 1\nmib set SW_PORT_TBL.3.Enable 1\n```\n\n## Enable 5GHz WiFi\n```\nmib set WLAN_MBSSIB_TBL.0.wlanDisabled 0\n```\n\n# Teardown and other photos\n{% include image.html file=\"yotc-m2-2050-g40-pcb-top-b21.jpg\" alt=\"YOTC M2-2050-G40 PCB Top (newer revision with RTL9607Cv2)\" caption=\"YOTC M2-2050-G40 PCB Top (newer revision with RTL9607Cv2)\" %}\n{% include image.html file=\"yotc-m2-2050-g40-pcb-b21.jpg\" alt=\"YOTC M2-2050-G40 PCB Bottom (newer revision with RTL9607Cv2)\" caption=\"YOTC M2-2050-G40 PCB Bottom (newer revision with RTL9607Cv2)\" %}\n"
  },
  {
    "path": "_ont/ont-yotc.md",
    "content": "---\ntitle: YOTC\nhas_children: true\nlayout: default\n---\n\n\n"
  },
  {
    "path": "_ont/ont-zisa-op151s.md",
    "content": "---\ntitle: Zisa OP151S\nhas_children: false\nlayout: default\nparent: Zisa\n---\n\n# Hardware Specifications\n\n|                  |                                                            |\n| ---------------- | ---------------------------------------------------------- |\n| Vendor/Brand     | Zisa                                                       |\n| Model            | OP151S                                                     |\n| ODM              | T&W                                                        |\n| ODM Product Code | TW2362H-CDEL                                               |\n| Chipset          | Lantiq PEB98035                                            |\n| CPU              | MIPS 34Kc interAptiv                                       |\n| CPU Clock        | 400MHz                                                     |\n| Flash            | 8 MB (GigaDevice GD25Q64CW16)                              |\n| RAM              | 64 MB (Nanya NT5TU32M16FG-AC1)                             |\n| System           | eCoS                                                       |\n| HSGMII           | Yes                                                        |\n| Optics           | SC/APC                                                     |\n| IP address       | 10.10.1.1                                                  |\n| Web Gui          | ✅ username `admin` or `guest`, password `1234` or `guest` |\n| SSH              | ✅ username `admin`, password `admin`                      |\n| Telnet           |                                                            |\n| Serial           | ✅                                                         |\n| Serial baud      | 115200                                                     |\n| Serial encoding  | 8-N-1                                                      |\n| Form Factor      | miniONT SFP                                                |\n\n{% include image.html file=\"op151s.png\" alt=\"Zisa OP151S\" caption=\"Zisa OP151S\" %}\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface: it's near the SFP header. TX, RX and ground pads need to be connected to a USB2TTL adapter that supports 3V3 logic.\n\n{% include image.html file=\"tw236h-cdel-serial.jpg\" alt=\"PMG3000-D20B Serial Pinout\" caption=\"PMG3000-D20B Serial Pinout\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## Firmware is interchangeable with:\n\n- [Halny HL-GSFP](/ont-halny-hl-gsfp)\n- [D-LINK DPN-100-Rev-A2](/ont-d-link-dpn-100-rev-a2)\n- [Zisa OP151s](/ont-Zisa-op151s)\n- [T&W TW2362H-CDEL](/ont-t-w-tw2362h-cdel)\n\n# Miscellaneous Links\n\n- [Tech Info Depot Wiki](http://en.techinfodepot.shoutwiki.com/wiki/ZISA_OP151S)\n- [Zisa OP151S 1GE GPON SFU SFP module](https://www.zisacom.com/admin/ewebeditor/uploadfile/20181116154842842.pdf)"
  },
  {
    "path": "_ont/ont-zisa.md",
    "content": "---\ntitle: Zisa\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-zte-f6005.md",
    "content": "---\ntitle: ZTE F6005 \nhas_children: false\nlayout: default\nparent: ZTE\n---\n\n# Hardware Specifications\n\n|                  |                                   |\n| ---------------- | --------------------------------- |\n| Vendor/Brand     | ZTE                               |\n| Model            | F6005                             |\n| ODM              | CIG                               |\n| ODM Product Code | [G-97CP](/ont-cig-g-97cp)         |\n| Chipset          | Realtek RTL9601D                  |\n| Flash            | 16MB                              |\n| RAM              | 32MB                              |\n| System           | Linux (Luna SDK 1.9.0)            |\n| 2.5GBaseT        | Yes                               |\n| Optics           | SC/APC                            |\n| IP address       | 192.168.1.1                       |\n| Web Gui          | ✅ user `admin`, password `admin` |\n| SSH              |                                   |\n| Telnet           |                                   |\n| Serial           |                                   |\n| Form Factor      | ONT                               |\n \n{% include image.html file=\"f6005_of.jpg\" alt=\"F6005 Open Fiber\" caption=\"F6005 with Open Fiber branding <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n{% include image.html file=\"f6005_tim.jpg\" alt=\"F6005 TIM\" caption=\"F6005 with ZTE branding, like the ones used by TIM\" %}\n{% include image.html file=\"f6005_teardown.jpg\" alt=\"F6005 teardown\" caption=\"F6005 teardown\" %}\n\n## Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. To accept TX line commands, the GND of the TTL adapter should be attached to the ONT's shield:\n\n{% include image.html file=\"q-010g-t_ttl.jpg\"  alt=\"ZTE F6005 TTL\" caption=\"ZTE F6005 TTL\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of software versions\n- V6.0.10N14 (TIM)\n- V6.0.10N20 (TIM)\n- V6.0.10P2N02 (OpenFiber)\n- V6.0.10P2N18 (OpenFiber)\n- V6.0.10P2N19 (OpenFiber)\n\n{% include_relative ont-nokia-use.md disableEnablePassword=true alertUsage=\"The following commands need to be executed on GponCLI via a terminal (serial, telnet or SSH). The models currently distributed in Italy by TIM and OpenFiber have no way to enter GponCLI via serial, only via telnet after flashing a custom firmware.\"  %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n# Advanced settings\n## Unlock serial to flash another firmware\n\nThis ONT is the twin brother of [CIG G97-CP](/ont-cig-g-97cp), if you can find its bootloader (named `CIG_bu.en_V3.09.15`), you can easly repack the firmware and enable its serial port limited to bootloader. \nYou need a 3.3V SPI programmer (like a modded CH341a) to read and write back the flash.\n\n{% include alert.html content=\"This was tested only on a TIM V6.0.10N20 firmware!\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\nAfter getting a full dump of your ONT, here is the procedure to replace the original bootloader with CIG's to enable the serial port:\n\nCut old bootloader:\n```sh\ndd if=flash_dump.bin of=no_boot_flash_dump.bin bs=1 skip=184064\n```\n\nAttach the new one:\n```sh\ncat CIG_bu.en_V3.09.15 no_boot_flash_dump.bin > mod-boot_flash_dump.bin\n```\n\nNow you can flash the file `mod-boot_flash_dump.bin` back to your SPI. \n\nAfter powering up the ONT, the serial port will print this message:\n\n```sh\n**************************************\n*                                    *\n*  KEY -- Enter console terminal     *\n*                                    *\n**************************************\n```\n\nTo access full U-Boot a special escape sequence is needed. \n\nIf Tera Term is used, create a simple MACRO file that contains this code:\n\n`send $1B $1D $0F $0B`\n\nConfigure Tera Term with the correct serial parameters (refer to **Serial** paragraph), select the created MACRO file **BEFORE** powering up the ONT but **DON'T OPEN IT NOW**, power-up the ONT and when you see the above message, quickly open the macro to reach the U-Boot prompt:\n\n```sh\n9601D#\n```\n\n{% include alert.html content=\"Note that this proceedure needs to be done each time you power-cycle the ONT\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\nNow with the U-Boot prompt a custom firmware that enables TELNET can be flashed. \nPlease note that if a **TIM** or **OpenFiber** base firmware is used, the TTL will be silent after kernel loading because it is disabled at kernel level.\n\nHere is the procedure to flash a custom firmware on the ONT via the U-Boot console:\n\n- Attach the ONT via ethernet cable to your PC and configure it to have IP **192.168.1.2**\n- Launch TFTP server and place custom firmware inside its root folder renamed into `cramfs.img.crc`. Be sure that the file has this name, otherwise the upgrade procedure will stop immediately\n- Run this command on U-Boot prompt:\n\n```sh\n9601D# upgdimage\nstart : 0x00200000 size :0x00700000\nUsing LUNA GMAC  device\nTFTP from server 192.168.1.2; our IP address is 192.168.1.1\nFilename 'cramfs.img.crc'.\nLoad address: 0x80400000\nLoading: Got ARP REPLY, set server/gtwy eth addr (00:1c:c2:42:30:ac)\n#################################################################\n         #################################################################\n         #################################################################\n         #################################################################\n         #################################################################\n         #################################################################\n         ###########################################################\ndone\nBytes transferred = 6582276 (647004 hex)\nfile size is 0x647004 from Env\nRootFS CRAMFS size [0x647004] length [0x647004]\nCRC32 for 80400000 ... 80a46fff ==> 382329fa\nfinish crc32, crc value is 0x382329fa\nfinish crc cmp!!!\nErasingStart: 0x200000 size:0x647004,alignment size:0x650000\nErasing 6619136 B from 00200000... 100% ~ 0084ffff/6619136 B\n        [Done]\nWriting 6619136 B from 80400000 to 00200000... 100% ~ 0084ffff/6619136 B\n        [Done]\n```\n\n{% include alert.html content=\"Please note that some OLTs (like TIM's Alcatel OLTs in Italy) need to have software image 0 or 1 set as active. So in this case, these commands will have to be executed twice to flash the image on both slots:\" alert=\"Note\" icon=\"svg-info\" color=\"blue\" %}\n\n\n**ImageA**:\n\n```sh\nset activeimage imagea\nsaveenv\n``` \n\nAnd flash image with the `upgdimage`.\n\n**ImageB**:\n\n```sh\nset activeimage imageb\nsaveenv\n``` \n\nAnd flash image with the `upgdimage`.\n\nThis way both slots will have the same firmware version and will avoid any swap by the OLT.\n\nAfter these steps, power-cycle ONT and login via Telnet with `root\\admin` credentials. From this moment you can simply spoof your ONT with the usual commands.\n\n## Change PLOAM password from the web UI\n\nOn some software versions, Password and Update Password fields are disabled and hidden even when using the admin account. They sometimes can be re-enabled via the browser's developer console by editing the HTML code and setting:\n\n- CSS display property to show (from none)\n- HTML `disabled=true` attribute to `enabled=true`\n\n{% include image.html file=\"f6005/f6005_of_change_ploam.png\" alt=\"F6005 procedure for changing the PLOAM password\" caption=\"F6005 procedure for changing the PLOAM password\" %}\n\nThis has been tested on the following firmware versions:\n- V6.0.10P2N19 (OpenFiber)\n\n\n# Known Bugs\n\nThe buffer size of the hardware is suboptimal: because of this the ONT is unable to work at full speed during uploads if the server is geographically and/or latency-wise far. There are no known problems if there is only one subscriber on the GPON tree. \nIn versions V6.0.10N14 and V6.0.10P2N02 this problem is felt more than with newer firmware as in the new versions (V6.0.10N20, V6.0.10P2N18, V6.0.10P2N19), an attempt is made to avoid buffer filling by means of pause frames. Not all routers support pause frames and some may still suffer from problems with the latest updates.\n\nIn version V6.0.10P2N18, problems were found in download speeds with 1 Gbps links.\n\n"
  },
  {
    "path": "_ont/ont-zte-f6005v3.md",
    "content": "---\ntitle: ZTE F6005v3 \nhas_children: false\nlayout: default\nparent: ZTE\n---\n\n# Hardware Specifications\n\n|              |                                                                   |\n| ------------ | ----------------------------------------------------------------- |\n| Vendor/Brand | ZTE                                                               |\n| Model        | F6005v3                                                           |\n| ODM          | ✅                                                                |\n| CPU          | ZTE ZX279133@Dual-Core A53                                        |\n| CPU Clock    | 1200MHz                                                           |\n| Chipset      | ZTE ZX279133                                                      |\n| Flash        | 128 MB (SPI NAND FM25S01A)                                        |\n| RAM          | 128 MB                                                            |\n| System       | Customized Linux by ZTE                                           |\n| 2.5GBaseT    | Yes                                                               |\n| Optics       | SC/APC                                                            |\n| IP address   | 192.168.1.1                                                       |\n| Web Gui      | ✅ user `admin`, password `admin` or defined by ISP               |\n| SSH          | N/A                                                               |\n| Telnet       | ✅ [^1]                                                           |\n| Serial       | ✅ [^2]                                                           |\n| Form Factor  | ONT                                                               |\n\n{% include image.html file=\"f6005v3_tim_1.jpg\" alt=\"F6005v3 TIM\" caption=\"F6005v3 TIM\" %}\n\n{% include image.html file=\"f6005v3_of_1.jpg\" alt=\"F6005v3 OpenFiber\" caption=\"F6005v3 OpenFiber\" %}\n\n\n## List of software versions\n### HW V3.0 \n- V3.0.10P3N2 (OpenFiber) \n- V3.0.10N06 (TIM Italy) - Internal version is V3.0.10P2N6\n\n## List of partitions \n\n### HW V3.0 \n\n| dev  | size     | erasesize | name             |\n| ---- | -------- | --------- | ---------------- |\n| mtd0 | 08000000 | 00020000  | \"whole flash\"    |\n| mtd1 | 00300000 | 00020000  | \"uboot\"          |\n| mtd2 | 00400000 | 00020000  | \"others\"         |\n| mtd3 | 00400000 | 00020000  | \"parameter tags\" |\n| mtd4 | 00400000 | 00020000  | \"wlan\"           |\n| mtd5 | 00800000 | 00020000  | \"usercfg\"        |\n| mtd6 | 00400000 | 00020000  | \"middle\"         |\n| mtd7 | 02a00000 | 00020000  | \"kernel1\"        |\n| mtd8 | 02a00000 | 00020000  | \"kernel2\"        |\n| mtd9 | 02500000 | 00020000  | \"rootfs1\"        |\n| mtd10 | 029e0000 | 00020000  | \"rootfs2\"       |\n\n\nThis ONT supports dual boot, as visible from the presence of `kernel0` and `kernel1`, which contain the rootfs (JFFS2 read-only).\nThe boot images can be swapped if they are the same or use the same **U-Boot** version. If you have a different **U-Boot** that was paired with the active image, do not attempt this, as it will brick the ONT, specially if TTL console is disabled.\n\n```sh\nupgradetest switchver X\n```\n\nWhere `X` can be `0/1`, based on the image you want to boot from.\n\nGet current installed version for each region:\n\n```sh\nupgradetest getver\n```\n\nYou can also clone the currently running image into the other slot using this command:\n\n```sh\nsyn_version\n```\n\nYou can check currenlty running image using this command:\n\n```sh\n# cat /proc/csp/versionstates\n\nbaseaddress    : 0x1b00000\ncurrent        : 0\nversion1states : 0x83\nversion2states : 0x83\n____________________________________________________\nIndex   Running Latest  CRC     Integrality     Type\n----------------------------------------------------\n0        Y       Y       N       Y              Upg\n1        N       Y       N       Y              Upg\n----------------------------------------------------\n```\n\nAnd check if the backup image has a valid CRC:\n\n```sh\n# upgradetest bakver\nbackup version crc is ok\nsuccess!\n```\n\n\n# Use\n{% include alert.html content=\"Commands have been tested on V3 HW rev. on OpenFiber and TIM firmwares\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n## Enable Telnet\n{% include alert.html content=\"This is an external script ([ZTE ONU Telnet Enabler](https://github.com/stich86/zteOnu)), use at your own risk! Credentials don't survive at reboot!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```sh\n./zteOnu -i 192.168.1.1 -u admin -p admin\n```\n\nIf Telnet is not opening, you are probably running a newer firmware, in that case change mac-address of the NIC connected to the ONT to `00:07:29:55:35:57` and use the flag `--new`:\n\n```sh\n./zteOnu -i 192.168.1.1 -u admin -p admin --new\n```\n\nYou should get this output and credentials to login over telnet:\n\n```sh\nZteONU 0.0.7, built at 09/10/2024\nsource: https://github.com/stich86/zteOnu\n-----------------------------------\nstep [0] reset factory: ok\nstep [1] request factory mode: ok\nstep [2] send sq: ok\nstep [3] check login auth with user: ok\nstep [4] enter factory mode: ok\n-----------------------------------\nSuccess authenticated with user: admin and password: admin\nTelnet Credentials (!! Temporary !!)\nUser: 9qNBo58H\nPass: OUBToR8J\n```\n\n## Enable console redirection\n\nTo see omcidebug messages on telnet, execute this command (just the first time of each connection):\n\n```sh\nredir printf\n```\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\nTo check the connection status, use the following command:\n```\ngpontest -gstate\n```\n`[gpontest] gpon state is [O5]` for O5 state\n\n## Getting  OLT vendor information\n\n```sh\nsendcmd 132 omcidebug showmedata 131\n```\n\nThis command will print the following output:\n\n```sh\n##################################\nMIB INFO:\n         ME CLASS: 131\n         DB NAME: olt_g, DBHandle: 32\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a2b1]----->\n         Vendorid:48 57 54 43\n      EquipmentID:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00 00 00 00 00 00 00\n          Version:31 30 00 00 00 00 00 00 00 00\n                    00 00 00 00\n        TimeofDay:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00\n---------------------------------------------------------------------\n```\n\n## Querying a particular OMCI ME\n\n```sh\nsendcmd 132 omcidebug showmedata ID_MIB (eg. 7 for Firmware version)\n```\n\nThis command will print the following output:\n\n```sh\n\n##################################\nMIB INFO:\n         ME CLASS: 7\n         DB NAME: soft_image, DBHandle: 14\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a011]----->\n          Version:V3.0.10P3N2\n     Is committed:01\n        Is active:01\n         Is valid:01\n\n<-----MeID[ 0x0001,1 ], Addr[ 0x19a031]----->\n          Version:V3.0.10P2N6\n     Is committed:00\n        Is active:00\n         Is valid:01\n---------------------------------------------------------------------\n```\n\n# GPON/OMCI settings\n\n## Getting ONU GPON Serial Number\n```sh\nsetmac 2 2176\nsetmac 2 2177\n```\n\n## Setting ONU GPON Serial Number\n\n{% include alert.html content=\"Both S/N and VID have to be changed. 2176 is for the VID (first 4 letters of the S/N) and 2177 is for the last 8 digits of the S/N\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n```sh\nsetmac 1 2176 ZTEG\nsetmac 1 2177 AABBCCDD\n```\n\n## Getting ONU GPON PLOAM password\n\n```sh\nsetmac 2 2181\nsetmac 2 2178\n```\n\n## Setting ONU GPON PLOAM password \n\n{% include alert.html content=\"The PLOAM password is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\nThis can be done easily via the Web UI. \n{% include image.html file=\"f6005v3/f6005v3_ploam_change.jpg\" alt=\"F6005v3 Ploam Change\" caption=\"F6005v3 Ploam Change\" %}\n\nTo do it via the shell use:\n```sh\nsetmac 1 2181 1234567890\nsetmac 1 2178 1234567890\n```\n\n\n\n## Setting ONU GPON Equipment ID\n\n```sh\nsetmac 1 32770 \"5::F6005V3.0:\"\n```\n\n## Check Images CRC\n\n```sh\nupgradetest bakver\n\nbackup version crc is ok\nsuccess!\n\n```\n\n## Persistent Telnet access \n\n{% include alert.html content=\"This procedure was only tested on OF V3.0.10P3N2 and TIM V3.0.10N06 firmware and it's persistent after an upgrade from OLT\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n{% include alert.html content=\"If you change GPON Serial Number, Telnet will be disabled. You have to run again the tool to enable it\" alert=\"Note\"  icon=\"svg-warning\" color=\"red\" %}\n\nNeeded tools:\n\n[ZTE ONU Telnet Enabler](https://github.com/stich86/zteOnu)\n\nJust run the enabled with `--telnet` flag to make Telnet persisten across Reboot (use `--new` flags and changed mac-address for newer firmware):\n\n```sh\n./zteOnu -i 192.168.1.1 -u admin -p admin --telnet\n```\n\n```sh\nZteONU 0.0.7, built at 09/10/2024\nsource: https://github.com/stich86/zteOnu\n-----------------------------------\nstep [0] reset factory: ok\nstep [1] request factory mode: ok\nstep [2] send sq: ok\nstep [3] check login auth with user: ok\nstep [4] enter factory mode: ok\n-----------------------------------\nSuccess authenticated with user: admin and password: admin\nPermanent Telnet succeed\nUser: root\nPass: Zte521\nWait reboot.. or powercycle it\n```\n\nThe ONT will reboot, and you can log in later using `root\\Zte521` as the credentials.\n\n**Only for firmware versions with restricted admin access**\n\nIn case you want add new a admin user instead of using the embedded credentials, run these commands before rebooting the ONT:\n\n```sh\nsendcmd 1 DB set DevAuthInfo 5 Enable 1\nsendcmd 1 DB set DevAuthInfo 5 User superadmin\nsendcmd 1 DB set DevAuthInfo 5 Pass superadmin\nsendcmd 1 DB set DevAuthInfo 5 Level 1\nsendcmd 1 DB set DevAuthInfo 5 AppID 1\nsendcmd 1 DB saveasy\n```\n\nReboot the ONT and you can login to the WebUI using `superadmin\\superadmin` as credentials with full unlocked menus.\n\n# Advanced settings\n\n## Backing up ONT partitions using hardware flasher\n\nIt's possible to swap RAW dump between ONTs and enable access over Telnet to modify some ONT parameters.\n\nNeeded tools:\n\n- Windows, Linux or macOS with [SNANDer](https://github.com/McMCCRU/SNANDer)\n- [CH341a programmer with 3.3V voltage](https://it.aliexpress.com/item/1005004637577204.html?spm=a2g0o.productlist.main.1.21ad51c1Lmyq6Z&algo_pvid=0aade75d-7f57-4fe7-b0f4-b3f2f56af9f1&algo_exp_id=0aade75d-7f57-4fe7-b0f4-b3f2f56af9f1-0&pdp_npi=4%40dis%21EUR%214.25%214.25%21%21%214.56%214.56%21%4021039cc717284006273332970e47ea%2112000029927819932%21sea%21IT%211864988329%21X&curPageLogUid=Xuv1aOCo58M9&utparam-url=scene%3Asearch%7Cquery_from%3A)\n- [Pogo-Pin Probe for WSON8 8x6mm chip](https://it.aliexpress.com/item/1005006666230520.html?spm=a2g0o.order_list.order_list_main.21.11e236965SstMd&gatewayAdapt=glo2ita)\n\nConnect all needed cable from the probe to the programmer, then attach the probe to the chip (use some rubbers to make it stable) and run this command to dump the NAND:\n\n```sh\n/SNANDer -r f6005v3_dump_X.bin\n```\n\nDo at least 3 dumps and compare their md5 to be sure that are good.\n\nIf you want to flash this dump to another ONT, just run these commands:\n\n```sh\n/SNANDer -e\n/SNANDer -w f6005v3_dump_X.bin -v\n```\n\n## Changing region code\n\n{% include alert.html content=\"Be aware that changing the region code may break features such as PPPoE depending on your ISP, and remove Telnet access!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\nZTE has created various region codes that load default values based on the local ISP. This configuration can be changed using this command:\n\n```sh\nupgradetest sfactoryconf X\n```\n\nWhere X is the number of supported regioncode into file `/etc/init.d/regioncode`, here is an example from TIM `V3.0.10N06` firmware:\n\n```sh\n# cat /etc/init.d/regioncode\n14:Thailand\n97:ItalyTi\n116:Tescali\n154:Izzi\n163:BrazilClaroHome\n188:HollandKpnSfu\n198:Manufacture\n2074:ItalyFastwebSFU\n```\n\n# Random notes\n- This new ONT (and probably the XGSPON version as well) has Secure Boot enabled. All headers contain an RSA key that is verified by U-Boot and the CPU (for U-Boot itself), so there’s no way to repack the rootfs to make it fully spoofable (at the moment..).\n- If your ONT is updated by the OLT (e.g., an F6005v3 OpenFiber ONT connected to a TIM OLT), the U-Boot partition will also be updated. After this update, it will no longer be possible to switch to the other partition because the signatures will not match, and TTL console is muted after U-Boot start.\n\n# Miscellaneous Links\n\n- [ZTE ONU Telnet Enabler](https://github.com/stich86/zteOnu)\n\n# Teardown and other photos\n\n## HW V3.0\n\n{% include image.html file=\"f6005v3_2.jpg\"  alt=\"Top of the F6005v3\" caption=\"Top of the F6005v3\" %}\n{% include image.html file=\"f6005v3_3.jpg\"  alt=\"Bottom of the F6005v3\" caption=\"Bottom of the F6005v3\" %}\n\n---\n\n[^1]: Credentials are randomly generated by ZTE ONU Telnet Enabler, they are not persistent and will change at reboot.\n[^2]: Serial console is read-only mode on most of U-Boot, and no output after kernel load. For OF V3.0.10P3N2 is possible after pressing ESC during the boot to access U-Boot Console.\n"
  },
  {
    "path": "_ont/ont-zte-f601.md",
    "content": "---\ntitle: ZTE F601 \nhas_children: false\nlayout: default\nparent: ZTE\n---\n\n# Hardware Specifications\n\n|              |                                                                   |                                                                   |             |                           |\n| ------------ | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------- | ------------------------- |\n| Vendor/Brand | ZTE                                                               | ZTE                                                               | ZTE         | ZTE                       |\n| Model        | F601v6                                                            | F601v7                                                            | F601v8      | F601v9                    |\n| ODM          | ✅                                                                | ✅                                                                |             | ✅                        |\n| CPU          | ZTE FA626TE                                                       | ZTE ZX279125@A9                                                   |             | ZX279127S                 |\n| CPU Clock    | 266 MHz                                                           | 600 MHz                                                           |             |                           |\n| Chipset      | ZTE FA626TE                                                       | ZTE ZX279125@A9                                                   |             |                           |\n| Flash        | 16 MB (SPI Flash w25q128)                                         | 16 MB (SPI Flash mx25l12805d)                                     |             | ZX279127S                 |\n| RAM          | 64 MB                                                             | 32 MB                                                             |             | 128 MB (ESMT M15T1G1664A) |\n| System       |                                                                   |                                                                   |             |                           |\n| 2.5GBaseT    | No                                                                | No                                                                | No          | No                        |\n| Optics       | SC/APC or SC/UPC                                                  | SC/APC                                                            | SC/APC      | SC/APC                    |\n| IP address   | 192.168.1.1                                                       | 192.168.1.1                                                       | 192.168.1.1 |                           |\n| Web Gui      | ✅ user `admin`, password `admin` or user `user`, password `user` | ✅ user `admin`, password `admin` or user `user`, password `user` |             |                           |\n| SSH          |                                                                   |                                                                   |             |                           |\n| Telnet       | ✅ [^1]                                                           | ✅ [^2]                                                           |             |                           |\n| Serial       | ✅                                                                | ✅                                                                |             |                           |\n| Form Factor  | ONT                                                               | ONT                                                               | ONT         | ONT                       |\n\n{% include image.html file=\"f601_v6_1.jpg\" alt=\"F601 v6\" caption=\"F601 v6\" %}\n{% include image.html file=\"f601_v7.jpg\" alt=\"F601 v7\" caption=\"A wall made out of broken F601 v7\" %}\n{% include image.html file=\"f601v9/front.jpg\" alt=\"F601 v9\" caption=\"F601 v9 <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n\n## List of software versions\n### HW V6.0 \n- V6.0.10P6T1 (OpenFiber) \n- V6.0.10P6T4 (OpenFiber)\n- V6.0.10P6N7 (OpenFiber)\n- V6.0.10N40 (TIM Italy)\n- V6.0.10P3T1 (Generic)\n- V6.0.10P1T26 (Generic)\n\n### HW V7.0\n- V7.0.10P6N7 (OpenFiber)\n- V7.0.10P6T4 (Generic)\n\n### HW V9.0\n- V9.0.10P2N1 (OpenFiber)\n\n## List of partitions \n\n### HW V6.0 and V7.0\n\n| dev  | size     | erasesize | name             |\n| ---- | -------- | --------- | ---------------- |\n| mtd0 | 01000000 | 00010000  | \"whole flash\"    |\n| mtd1 | 00080000 | 00010000  | \"uboot\"          |\n| mtd2 | 00700000 | 00010000  | \"kernel0\"        |\n| mtd3 | 00700000 | 00010000  | \"kernel1\"        |\n| mtd4 | 00010000 | 00010000  | \"others\"         |\n| mtd5 | 00010000 | 00010000  | \"parameter tags\" |\n| mtd6 | 00160000 | 00010000  | \"usercfg\"        |\n\n\nThis ONT supports dual boot, as visible from the presence of `kernel0` and `kernel1`, which contain the rootfs.\nThe boot images can be swapped with the following command:\n\n```sh\nupgradetest switchver X\n```\n\nWhere `X` can be `0/1`, based on the image you want to boot from.\n\n\nYou can also clone the currently running image into the other slot using this command:\n\n```sh\nsyn_version\n```\n\n# Use\n{% include alert.html content=\"Commands have been tested on V6/V7 HW rev. on TIM and OpenFiber firmwares\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n## Enable Telnet\n{% include alert.html content=\"This is an external script ([ZTE Telnet enabler](https://github.com/douniwan5788/zte_modem_tools)), use at your own risk! Credentials don't survive at reboot!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n{% include alert.html content=\"For italian users, the script above only works on versions V6.0.10N40 (TIM) and V6.0.10P6N7 (OpenFiber)\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```sh\npython3 zte_factroymode.py --user admin --pass admin --ip 192.168.1.1 --port 80 telnet open\n```\n\nYou should get this output and credentials to login over telnet:\n\n```sh\ntrying  user:\"admin\" pass:\"admin\"\nreset facTelnetSteps:\nreset OK!\n\nfacStep 1:\nOK!\n\nfacStep 2:\nOK!\n\nfacStep 3:\nOK!\n\nfacStep 4:\nOK!\n\nfacStep 5:\nOK!\n\ndone\nUsername: 2W3iqFVt\nPassword: Eqb8X8Qt\n```\n\n## Enable console redirection\n\nTo see omcidebug messages on telnet, execute this command (just the first time of each connection):\n\n```sh\nredir printf\n```\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\nTo check the connection status, use the following command:\n```\ngpontest -gstate\n```\n`[gpontest] gpon state is [O5]` for O5 state\n\n## Getting  OLT vendor information\n\n```sh\nsendcmd 132 omcidebug showmedata 131\n```\n\nThis command will print the following output:\n\n```sh\n##################################\nMIB INFO:\n         ME CLASS: 131\n         DB NAME: olt_g, DBHandle: 32\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a2b1]----->\n         Vendorid:48 57 54 43\n      EquipmentID:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00 00 00 00 00 00 00\n          Version:31 30 00 00 00 00 00 00 00 00\n                    00 00 00 00\n        TimeofDay:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00\n---------------------------------------------------------------------\n```\n\n## Querying a particular OMCI ME\n\n```sh\nsendcmd 132 omcidebug showmedata ID_MIB (eg. 7 for Firmware version)\n```\n\nThis command will print the following output:\n\n```sh\n\n##################################\nMIB INFO:\n         ME CLASS: 7\n         DB NAME: soft_image, DBHandle: 14\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a011]----->\n          Version:V6.0.10N41\n     Is committed:01\n        Is active:01\n         Is valid:01\n\n<-----MeID[ 0x0001,1 ], Addr[ 0x19a031]----->\n          Version:V6.0.10N39\n     Is committed:00\n        Is active:00\n         Is valid:01\n---------------------------------------------------------------------\n```\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\n{% include alert.html content=\"Both S/N and VID have to be changed. 2176 is for the VID (first 4 letters of the S/N) and 2177 is for the last 8 digits of the S/N\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n```sh\nsetmac 1 2176 ZTEG\nsetmac 1 2177 AABBCCDD\n```\n\n## Setting ONU GPON PLOAM password\n\n{% include alert.html content=\"The PLOAM password is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\nThis can be done easily via the web UI. To do it via the shell use:\n```sh\nsetmac 1 2181 1234567890\nsetmac 1 2178 1234567890\n```\n\n## Changing ONU HW/SW Version and gaining persistent telnet access \n\n{% include alert.html content=\"The only way to change HW/SWVer on this ONT is to modify the firmware, so do it at your own risk\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n{% include alert.html content=\"This procedure was only tested on TIM V6.0.10N40 and OF V6.0.10P6N7 firmwares\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n{% include alert.html content=\"This procedure works with `ZTE_Firmware_Mod.py` v1.0.0\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n\nNeeded tools:\n\n- Linux VM or WSL with Python >3.3\n- [ZTE Telnet enabler](https://github.com/douniwan5788/zte_modem_tools)\n- [ZTE Firmware Mod Script](http://github.com/hack-gpon/ZTE-firmware-mod)\n- TFTP server\n\nDownload the script `ZTE_Firmware_Mod.py` and place in the same folder where you have the `kernel0` or `kernel1` mtd dump taken from step `**Backing up ONT partitions for HW/SW version mod**`.\n\nRun the script with the following parameters, use `-h` for help. In this example we are just replacing the firmware version with `V6.0.10N40`. Put your own version here, it has to be a maximum of 15 characters long. This parameter is mandatory:\n\nIf you need to create a partition dump with a different name, please put the correct name instead of `kernel0`\n\n```sh\npython3 ZTE_Firmware_Mod.py kernel0 V6.0.10N40 fw_mod.bin\n```\n\nThe script will output the following messages, ending with instruction on how to install the patched firmware that has been created:\n\n```sh\n---------------------------------------\nThis script is currently working only for ZTE F601v6 shipped with TIM (V6.0.10N40) or OpenFiber (V6.0.10P6N7) firmware\nAll other versions were not tested, USE IT AT YOUR OWN RISK!\nBefore proceed make sure to have a GOOD BACKUP of all your ONT partitions.\nPlease refer to Hack-GPON Wiki for how-to: https://hack-gpon.org/ont-zte-f601/\n---------------------------------------\nTo proceed please enter 'y', otherwise 'n' to exit: y\n\n---------------------------------------\nStep 1: Patching zImage and fix uImage Header..\n------: Done in 4.846 secs\nStep 2: Add back ZTE Header and Firmware Version..\n------: Old FW version V6.0.10N39\n------: New FW version V6.0.10N40\n------: Done in 0.008 secs\nStep 3: Write firmware file..\n------: Done in 0.003 secs\n\n---------------------------------------\nHow to flash:\n\nCopy firmware file fw_mod.bin into your TFTP server and flash is using this procedure on the ONT over telnet:\n\ncd /var/tmp\ntftp -l fw.bin -r fw_mod.bin 192.168.1.100 -g\nfw_flashing -d 0 -r 0 -c 1 -f fw.bin\n\nAfter you get prompt back, erase old configurations:\n\nrm /userconfig/cfg/*.xml\n\nCreate dummy files for HW\\SWVer spoofing:\n!!! CHANGE IT BASED ON YOUR ORIGINAL ONT !!!\necho V6.0 > /userconfig/cfg/hwver\necho V6.0.10N40 > /userconfig/cfg/swver\n\nThen run these commands to switch software bank and reboot the ONT:\n\nupgradetest switchver\nreboot\n---------------------------------------\nGood luck!\n```\n\n**Two last steps!**\n\nIf you are swapping from TIM to OpenFiber firmware, or viceversa, run these two command before rebooting the ONT based on the firmware version:\n\nFrom **OpenFiber V6.0.10P6N7** to **TIM V6.0.10N40**: `upgradetest sfactoryconf 97`\n\nFrom **TIM V6.0.10N40** to **OpenFiber V6.0.10P6N7**: `upgradetest sfactoryconf 116`\n\nAfter the ONT has rebooted and you can access again, telnet can be enabled on each reboot. To do this, run again `zte_factroymode.py` to open new session to it. When you are in, execute these commands:\n\n```sh\nsendcmd 1 DB set TelnetCfg 0 TS_Enable 1\nsendcmd 1 DB set TelnetCfg 0 Lan_Enable 1\nsendcmd 1 DB set TelnetCfg 0 TS_UName root\nsendcmd 1 DB set TelnetCfg 0 TS_UPwd root\nsendcmd 1 DB addr FWSC 0\nsendcmd 1 DB set FWSC 0 ViewName IGD.FWSc.FWSC1\nsendcmd 1 DB set FWSC 0 Enable 1\nsendcmd 1 DB set FWSC 0 INCName LAN\nsendcmd 1 DB set FWSC 0 INCViewName IGD.LD1\nsendcmd 1 DB set FWSC 0 Servise 8\nsendcmd 1 DB set FWSC 0 FilterTarget 1\nsendcmd 1 DB saveasy\n```\n\nReboot the ONT and a telnet interface will be available. You can login using `root\\root` as credentials.\n\n**Just for OpenFiber firmware**\n\nIn case you want add new a admin user instead of using the embedded credentials, run these commands before rebooting the ONT:\n\n```sh\nsendcmd 1 DB set DevAuthInfo 5 Enable 1\nsendcmd 1 DB set DevAuthInfo 5 User superadmin\nsendcmd 1 DB set DevAuthInfo 5 Pass superadmin\nsendcmd 1 DB set DevAuthInfo 5 Level 0\nsendcmd 1 DB set DevAuthInfo 5 AppID 1\nsendcmd 1 DB saveasy\n```\nReboot the ONT and you can login to the WebUI using `superadmin\\superadmin` as credentials with full unlocked menus.\n\n# Advanced settings\n\n## Backing up ONT partitions for HW/SW version mod\n\nThis step is suggested if you want to replace firmware on the ONT to spoof HW and SW versions:\n\nNeeded tools:\n\n- Linux VM or WSL with Python >3.3\n- [ZTE Telnet enabler](https://github.com/douniwan5788/zte_modem_tools)\n- [ZTE_Firmware_Mod](https://github.com/hack-gpon/ZTE-firmware-mod)\n- TFTP server\n\nFirst step is to login over telnet with `zte_factroymode.py`, then execute ALL these commands for a full backup:\n\n**Go to `/tmp` folder to create tmp files**\n\n```sh\ncd /tmp\n```\n\n**Dump mtd1 (uboot+config)**\n\n```sh\n cat /dev/mtd1 > uboot_config\n```\n\nCopy the dumped firmware via TFTP to you VM or Windows machine with this command:\n\n```sh\ntftp -l uboot_config -r uboot_config -p 192.168.1.X (where X is the IP of your PC)\n```\n\nDelete dump:\n\n```sh\n rm uboot_config\n```\n\n**Dump mtd2 (kernel0)**\n\n```sh\n cat /dev/mtd2 > kernel0\n```\n\nCopy the dumped firmware via TFTP to you VM or Windows machine with this command:\n\n```sh\ntftp -l kernel0 -r kernel0 -p 192.168.1.X (where X is the IP of your PC)\n```\n\nDelete dump:\n\n```sh\n rm kernel0\n```\n\n**Dump mtd3 (kernel1)**\n\n```sh\n cat /dev/mtd3 > kernel1\n```\n\nCopy the dumped firmware via TFTP to you VM or Windows machine with this command:\n\n```sh\ntftp -l kernel1 -r kernel1 -p 192.168.1.X (where X is the IP of your PC)\n```\n\nDelete dump:\n\n```sh\n rm kernel1\n```\n\n**Dump mtd4 (others)**\n\n```sh\n cat /dev/mtd4 > others\n```\n\nCopy the dumped firmware via TFTP to you VM or Windows machine with this command:\n\n```sh\ntftp -l others -r others -p 192.168.1.X (where X is the IP of your PC)\n```\n\nDelete dump:\n\n```sh\n rm others\n```\n\n**Dump mtd5 (param_tags)**\n\n```sh\n cat /dev/mtd5 > param_tags\n```\n\nCopy the dumped firmware via TFTP to you VM or Windows machine with this command:\n\n```sh\ntftp -l param_tags -r param_tags -p 192.168.1.X (where X is the IP of your PC)\n```\n\nDelete dump:\n\n```sh\n rm param_tags\n```\n\n**Dump mtd6 (usercfg)**\n\n```sh\n cat /dev/mtd6 > usercfg\n```\n\nCopy the dumped firmware via TFTP to you VM or Windows machine with this command:\n\n```sh\ntftp -l usercfg -r usercfg -p 192.168.1.X (where X is the IP of your PC)\n```\n\nDelete dump:\n\n```sh\n rm usercfg\n```\n\n## Changing region code\n\n{% include alert.html content=\"Be aware that changing the region code may break features such as PPPoE depending on your ISP\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\nZTE has created various region codes that load default values based on the local ISP. This configuration can be changed using this command:\n\n```sh\nupgradetest sfactoryconf X\n```\n\nWhere X is the number of supported regioncode into file `/etc/init.d/regioncode`, here is an example from TIM `V6.0.10N40` firmware:\n\n```sh\n# cat /etc/init.d/regioncode\n2:Lithuania\n15:Portugal\n17:TelMex\n19:Turkey\n32:JazzTel\n38:Czechia\n54:Viettel\n59:SeteTec\n63:Ais\n88:GerNetCologne\n97:ItalyTI\n104:IndiaRJIO\n110:IndiaGTPL\n112:BrazilTIM\n115:ItalyOpenFiber\n116:ItalyTescali\n118:PolandINEA\n139:MultiLaser\n198:Manufacture\n```\n\n# Random notes\n- Both F601v6 and F601v7 read the software version exposed through the gpon_omci deamon from each kernel partition header, so the only way to spoof this parameter is to change the version in the header and recalculate CRC, otherwise the bootloader will refuse to load the image.\n- TIM's F601v6s use HWVer `VDF`, this can be changed back to `V6.0` issuing this command via telnet: `setmac 1 32770 3`\n- The F601v7 is mounted 'upside down' to save on waveguides, the LEDs would be on the bottom of the PCB, so it would have to be turned upside down to make it cooler...\n- The F601v6 turns on and runs even with 9V input.\n- The F601v7 turns on and runs even with 5V input.\n\n# Miscellaneous Links\n\n- [ZTE config.bin decoder](https://github.com/mkst/zte-config-utility)\n- [Usource GPON ONU STICK](https://www.usourcetech.com/web/userfiles/download/GPONSTICKSFPCLASSB-2B_Rev01.pdf)\n- [GPON module Dfp-34g-2c2 sfp](https://forum.openwrt.org/t/gpon-module-dfp-34g-2c2-sfp/51641)\n- [ZTE Telnet enabled](https://github.com/douniwan5788/zte_modem_tools)\n- [ZTE Firmware Mod Script](http://github.com/hack-gpon/ZTE-firmware-mod)\n\n# Teardown and other photos\n\n## HW V6.0\n\n{% include image.html file=\"f601_v6_2.jpg\"  alt=\"Bottom of the F601 v6\" caption=\"Bottom of the F601 v6 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v6_teardown_1.jpg\"  alt=\"Teardown of the F601 v6\" caption=\"Teardown of the F601 v6  <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v6_teardown_2.jpg\"  alt=\"Teardown of the F601 v6\" caption=\"Teardown of the F601 v6 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v6_teardown_3.jpg\"  alt=\"Teardown of the F601 v6\" caption=\"Teardown of the F601 v6 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n\n## HW V7.0\n\n{% include image.html file=\"f601_v7_1.jpg\"  alt=\"Bottom of the F601 v7\" caption=\"Bottom of the F601 v6 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v7_teardown.jpg\"  alt=\"Bottom of the F601 v7\" caption=\"Teardown of the F601 v7 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v7_teardown_1.jpg\"  alt=\"Teardown of the F601 v7\" caption=\"Teardown of the F601 v7  <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v7_teardown_2.jpg\"  alt=\"Teardown of the F601 v7\" caption=\"Teardown of the F601 v7 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v7_teardown_3.jpg\"  alt=\"Teardown of the F601 v7\" caption=\"Teardown of the F601 v7 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n{% include image.html file=\"f601_v7_teardown_4.jpg\"  alt=\"Teardown of the F601 v7\" caption=\"Teardown of the F601 v7 <a href='https://forum.fibra.click/u/LATIITAY'>@LATIITAY</a>\" %}\n\n## HW V9.0\n\n{% include image.html file=\"f601v9/front.jpg\"  alt=\"Front of the F601 v9\" caption=\"Bottom of the F601 v9 <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n{% include image.html file=\"f601v9/back.jpg\"  alt=\"Bottom of the F601 v9\" caption=\"Bottom of the F601 v9 <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n{% include image.html file=\"f601v9/teardown-1.jpg\"  alt=\"Teardown of the F601 v9\" caption=\"Teardown of the F601 v9 <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n{% include image.html file=\"f601v9/teardown-2.jpg\"  alt=\"Teardown of the F601 v9\" caption=\"Teardown of the F601 v9  <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n{% include image.html file=\"f601v9/teardown-3.jpg\"  alt=\"Teardown of the F601 v9\" caption=\"Teardown of the F601 v9 <a href='https://forum.fibra.click/u/mirko991'>@mirko991</a>\" %}\n\n---\n\n[^1]: If you flash a modified firmware (only HWVer V6.0 at the moment), you can permanently enable telnet to avoid running the `zte_factory.py` script each time.\n[^2]: Credentials are randomly generated by zte_factroymode.py, they are not persistent and will change at reboot."
  },
  {
    "path": "_ont/ont-zte.md",
    "content": "---\ntitle: ZTE\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/ont-zyxel-pmg1005-t20b.md",
    "content": "---\ntitle: Zyxel PMG1005-T20B\nhas_children: false\nlayout: default\nparent: Zyxel\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Zyxel                            |\n| Model           | PMG1005-T20B                     |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [Openreach FTTP deployment](https://www.openreach.com/fibre-broadband)\n"
  },
  {
    "path": "_ont/ont-zyxel-pmg3000-d20b.md",
    "content": "---\ntitle: Zyxel PMG3000-D20B\nhas_children: false\nlayout: default\nparent: Zyxel\n---\n\n# Hardware Specifications\n\n|                  |                                                            |\n| ---------------- | ---------------------------------------------------------- |\n| Vendor/Brand     | Zyxel                                                      |\n| Model            | PMG3000-D20B                                               |\n| ODM              | T&W                                                        |\n| ODM Product Code | TW2362H-CDEL                                               |\n| Chipset          | Lantiq PEB98035                                            |\n| Flash            | 8 MB                                                       |\n| RAM              | 64 MB                                                      |\n| CPU              | MIPS 34Kc interAptiv                                       |\n| CPU Clock        | 400MHz                                                     |\n| System           | eCoS                                                       |\n| HSGMII           | Yes                                                        |\n| Optics           | SC/APC                                                     |\n| IP address       | 10.10.1.1                                                  |\n| Web Gui          | ✅ username `admin` or `guest`, password `1234` or `guest` |\n| SSH              | ✅ username `admin`, password `admin`. Not available in firmware V1.00(ABVJ.1)b1e |\n| Telnet           |                                                            |\n| Serial           | ✅                                                         |\n| Serial baud      | 115200                                                     |\n| Serial encoding  | 8-N-1                                                      |\n| Form Factor      | miniONT SFP                                                |\n\n{% include image.html file=\"pmg3000-d20b.png\" alt=\"PMG3000-D20B\" caption=\"PMG3000-D20B\" %}\n{% include image.html file=\"tw236h-cdel-th.jpg\" alt=\"PMG3000-D20B Teardown\" caption=\"PMG3000-D20B Teardown\" %}\n{% include image.html file=\"tw236h-cdel-th-back.jpg\" alt=\"PMG3000-D20B Teardown\" caption=\"PMG3000-D20B Teardown\" %}\n{% include image.html file=\"pmg3000-d20b_modulediff.jpg\" alt=\"PMG3000-D20B Module comparison\" caption=\"PMG3000-D20B Module comparison\" %}\n\nOnce you access the stick via ssh you will be presented with a second tier login. The credentials to access the zyxel shell are: username: `twmanu` with password: `twmanu` or username: `admin` with password: `1234`.\nFrom the Zyxel shell you can move to a standard Linux shell using the `linuxshell` command\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. It's near the SFP header. TX, RX and ground pads need to be connected to a USB2TTL adapter supporting 3V3 logic. Ground and power can be connected via the regular SFP pins.\n\n{% include image.html file=\"tw236h-cdel-serial.jpg\" alt=\"PMG3000-D20B Serial Pinout\" caption=\"PMG3000-D20B Serial Pinout\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## Firmware is interchangeable with:\n\n- [Halny HL-GSFP](/ont-halny-hl-gsfp)\n- [D-LINK DPN-100-Rev-A2](/ont-d-link-dpn-100-rev-a2)\n- [Zisa OP151s](/ont-zisa-op151s)\n- [T&W TW2362H-CDEL](/ont-t-w-tw2362h-cdel)\n\n## List of software versions\n- V1.00(ABVJ.0)b3s (2020)\n- V1.00(ABVJ.0)b3i (2020)\n- V1.00(ABVJ.0)b3v\n- V1.00(ABVJ.1)b1e (ca. 2024)\n- V2.50(ABVJ.0)b1b (2022)\n- V2.50(ABVJ.1)b1d (2023)\n\n## List of partitions\n \n| dev  | size     | erasesize | name           |\n| ---- | -------- | --------- | -------------- |\n| mtd0 | 00060000 | 00010000  | \"Boot\"         |\n| mtd1 | 00010000 | 00010000  | \"Env\"          |\n| mtd2 | 00390000 | 00010000  | \"ImageA\"       |\n| mtd3 | 00390000 | 00010000  | \"ImageB\"       |\n| mtd4 | 00060000 | 00010000  | \"Config\"       |\n| mtd5 | 00010000 | 00010000  | \"SECTION_EGIS\" |\n| mtd6 | 00250000 | 00010000  | \"rootfs\"       |\n| mtd7 | 00020000 | 00010000  | \"rootfs_data\"  |\n\n\nThis stick supports dual boot, as visible from the presence of `ImageA` and `ImageB`, which contain the rootfs.\n\n\n# Useful files and binaries\n\n## Useful files\n- `/var/config/ont.sys` - Used to customize various settings on the stick. If you don't have it you can copy the stock one from /ont.sys\n\n# General Settings and Useful Commands\n{% include alert.html content=\"All commands start from the twmanu shell.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\nTo check the connection status, use the following command:\n```\nlinuxshell\nonu ploamsg\n```\n\n`curr_state=5` for O5 state, `curr_state=1` for all other operational states.\n\n## Getting Speed LAN Mode\nThis SFP has HSGMII enabled by default: `link_status=5` for HSGMII 2.5Gbit, `link_status=4` for SGMII 1Gbit:\n```\nlinuxshell\nonu lanpsg 0\n```\n\n## Setting Speed LAN Mode\n{% include alert.html content=\"This command forces the speed to 2.5 and is instantaneous and permanent, use it only if your hardware supports HSGMII and is compatible (e.g. modified Broadcom 57810s NIC)\" alert=\"Note\" icon=\"svg-warning\" color=\"red\" %}\n```sh\nhal\nset speed 2.5g mode full\n```\n\n## Querying a particular OMCI ME\nQuery via OMCI ME Class Name:\n```sh\nomci\nshow me classname OmciClassName (e.g Ont2g)\n```\n\nQuery via OMCI ME ID:\n```sh\nomci\nshow me classid OmciClassId (e.g 7)\n```\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n{% include alert.html content=\"The S/N is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n```sh\nmanufactory\nset sn ALCLf0f0f0f0\nexit\nhal\nset sn ALCLf0f0f0f0\n```\nDo not worry if one of the two commands results missing, the change is still applied with just one of them.\n\n## Setting ONU GPON PLOAM password\n{% include alert.html content=\"The PLOAM password is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\nThis can be done easily via the web UI. To do it via the shell use:\n```sh\nhal\nset password PLOAMPASS\n```\n\n## Setting OMCI software version (ME 7)\nEdit `/var/config/ont.sys` via vi directly on the stick itself. The file is CRLF terminated, one entry per line.\nThe entries for the software version are:\n```\nSW_VER0:0xabcdef\nSW_VER1:0xabcedf\n```\n{% include alert.html content=\"It's better to enter the software version in hex format, all lowercase precedeed by 0x.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n## Setting OMCI hardware version (ME 256)\n```sh\nmanufactory\nset hardware version 3FE49165BFAA01\n```\n\nIf the above command is missing you can edit `/var/config/ont.sys` via vi directly on the stick itself. The file is CRLF terminated, one entry per line.\nThe entry for the hardware version is:\n```\nONTG_VER:0x463630303556362e300000000000\n```\n\nThe hardware version must be encoded in hex format and right padded to 28 characters with 0 (excluding the starting 0x) to avoid any spurious values. \n\n## Setting OMCI equipment ID (ME 257)\n{% include alert.html content=\"Model number must not be longer than 20 characters in total.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n```sh\nmanufactory\nset equipment id MYEQUIPMENTID\nexit\nomci\nequipment id MYEQUIPMENTID\n```\n\nIf any of the above commands is missing you can edit `/var/config/ont.sys` via vi directly on the stick itself. The file is CRLF terminated, one entry per line.\nThe entry for the equipment id is:\n```\nONTG_EQID:0x463630303556362E30000000000000000000000\n```\n\nThe equipment id must be encoded in hex format and right padded to 39 characters with 0 (excluding the starting 0x) to avoid any spurious values. \n\n\n# Advanced settings\n\n## Resetting Web GUI admin credentials\n\nUnder certain circumstances, the Web GUI admin credentials might get changed from the default `admin`/`1234` combination.\nTo restore the default combination try following [this method](https://github.com/xvzf/zyxel-gpon-sfp/issues/6#issuecomment-1065864650).\n\n## Creating a new rootfs\nThe stick has a tricky image packing method, fortunately it has been reverse engineered. A script to help you create a custom rootfs can be found here: [https://github.com/hack-gpon/zyxel-pmg-3000-mod-kit](https://github.com/hack-gpon/zyxel-pmg-3000-mod-kit)\n\n## Flashing a new rootfs\n{% include alert.html content=\"All commands start from the twmanu shell.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n- Transfer the new mtd on the stick via tftp:\n```\nlinuxshell\ntftp -gr mtd2.mod.bin TFTP_SERVER_IP\n```\n- Flash it on the standby partition. \nYou can use `system` and then `show actimage` to get the current active image. Check `/proc/mtd` for the right mtds. Usually:\n- if the currect active image is A, mtd2 is in use\n- If the current active image is B, mtd3 is in use\n```\nlinuxshell\nmtd -e /dev/mtd2 write /tmp/mtd2.mod.bin /dev/mtd2\n```\n- Switch to the new image:\n```\nsystem\nset actimage a\n```\n- Reboot the ONT:\n```\nsystem\nreboot\n```\n\n# EEPROM (I2C slave simulated EEPROM)\nThe Zyxel PMG3000-D20B does not have a physical EEPROM, the Falcon SOC emulates an EEPROM by exposing it on the I2C interface as required by the SFF-8472 specification.\n\nOn the I2C interface, two memories of 256 bytes each will be available at the addresses `1010000X (A0h)` and `1010001X (A2h)`.\n\nThe Zyxel PMG3000-D20B stores the content of the emulated EEPROM1 (A2h) in `/tmp/config/sfp_eeprom1` to restore it after a reboot.\n\n{% include alert.html content=\"The contents of EEPROM0 (A0h) are not stored anywhere and they're regenerated at each boot\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n## EEPROM0 layout\n\n| address | size | name                              | default value                                                                                           | description                                                         |\n| ------- | ---- | --------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |\n|         |      | **BASE ID FIELDS (SFF-8472)**     |                                                                                                         |                                                                     |\n| 0       | 1    | Identifier                        | `0x03` (SFP)                                                                                            | Type of transceiver                                                 |\n| 1       | 1    | Ext identifier                    | `0x04` (MOD_DEF 4)                                                                                      | Additional information about the transceiver                        |\n| 2       | 1    | Connector                         | `0x01` (SC)                                                                                             | Type of media connector                                             |\n| 3-10    | 8    | Transceiver                       | `0x04 0x40 0x00 0x02 0x12 0x10 0x00 0x80` (1X LX, 1310TX SMF, 1000BASE-LX, 1200 Mbps)                   | Code for optical compatibility                                      |\n| 11      | 1    | Encoding                          | `0x03` (8B/10B)                                                                                         | High speed serial encoding algorithm                                |\n| 12      | 1    | Signaling Rate, Nominal           | `0x0C` (1Gbps)                                                                                          | Nominal signaling rate                                              |\n| 13      | 1    | Rate Identifier                   | `0x00` (Not used)                                                                                       | Type of rate select functionality                                   |\n| 14      | 1    | Length (SMF,km)                   | `0x14` (20 km)                                                                                          | Link length supported for single-mode fiber, units of km            |\n| 15      | 1    | Length (SMF)                      | `0xC8` (200 x 100m)                                                                                     | Link length supported for single-mode fiber, units of 100 m         |\n| 16      | 1    | Length (50 um, OM2)               | `0xFF` (No support)                                                                                     | Link length supported for 50 um OM2 fiber, units of 10 m            |\n| 17      | 1    | Length (62.5 um, OM1)             | `0xFF` (No support)                                                                                     | Link length supported for 62.5 um OM1 fiber, units of 10 m          |\n| 18      | 1    | Length copper cable               | `0x00` (No support)                                                                                     | Link length supported for copper or direct attach cable, units of m |\n| 19      | 1    | Length (50 um, OM3)               | `0xFF` (No support)                                                                                     | Link length supported for 50 um OM3 fiber, units of 10 m            |\n| 20-35   | 16   | Vendor name                       | `0x4C 0x61 0x6E 0x74 0x69 0x71 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20` (Lantiq)              | SFP vendor name (ASCII)                                             |\n| 36      | 1    | Transceiver                       | `0x00` (No support)                                                                                     | Code for optical compatibility                                      |\n| 37-39   | 3    | Vendor OUI                        | `0x00 0x1C 0xAD`                                                                                        | SFP vendor IEEE company ID                                          |\n| 40-55   | 16   | Vendor PN                         | `0x50 0x61 0x72 0x74 0x20 0x4E 0x75 0x6D 0x62 0x65 0x72 0x20 0x20 0x20 0x20 0x20` (Part Number)         | Part number provided by SFP vendor (ASCII)                          |\n| 56-59   | 4    | Vendor rev                        | `0x30 0x30 0x30 0x30` (0000)                                                                            | Revision level for part number provided by vendor (ASCII)           |\n| 60-61   | 2    | Wavelength                        | `0x05 0x1E` (1310nm TX)                                                                                 | Laser wavelength                                                    |\n| 62      | 1    | Fibre Channel Speed 2             | `0xFF` (No support)                                                                                     | Transceiver's Fibre Channel speed capabilities                      |\n| 63      | 1    | CC_BASE                           |                                                                                                         | Check code for Base ID Fields (addresses 0 to 62)                   |\n|         |      | **EXTENDED ID FIELDS (SFF-8472)** |                                                                                                         |                                                                     |\n| 64-65   | 2    | Options                           | `0x00 0x1A` (TX DISABLE, TX FAULT, RX LOS)                                                              | Indicates which optional transceiver signals are implemented        |\n| 66      | 1    | Signaling Rate, max               | `0x00` (No specified)                                                                                   | Upper signaling rate margin, units of %                             |\n| 67      | 1    | Signaling Rate, min               | `0x00` (No specified)                                                                                   | Lower signaling rate margin, units of %                             |\n| 68-83   | 16   | Vendor SN                         | `0x6E 0x6F 0x20 0x73 0x65 0x72 0x69 0x61 0x6C 0x20 0x6E 0x75 0x6D 0x62 0x65 0x72` (no serial number)    | Serial number provided by vendor (ASCII)                            |\n| 84-91   | 8    | Date code                         | `0x31 0x33 0x30 0x31 0x30 0x31 0x20 0x20` (130101)                                                      | Vendor's manufacturing date code                                    |\n| 92      | 1    | Diagnostic Monitoring Type        | `0x6C` (Digital diagnostic, Internally calibrated, Received average power type, address change)         | Indicates which type of diagnostic monitoring is implemented        |\n| 93      | 1    | Enhanced Options                  | `0xF0` (Alarm/warning flags, soft TX_DISABLE control, soft TX_FAULT monitoring, soft RX_LOS monitoring) | Indicates which optional enhanced features are implemented          |\n| 94      | 1    | SFF-8472 Compliance               | `0x05` (Rev 11.0 of SFF-8472)                                                                           | Indicates which revision of SFF-8472 the transceiver complies with  |\n| 95      | 1    | CC_EXT                            |                                                                                                         | Check code for the Extended ID Fields (addresses 64 to 94)          |\n|         |      | **VENDOR SPECIFIC FIELDS**        |                                                                                                         |                                                                     |\n| 96-127  | 32   | Vendor data                       | `0x20 0x20 0x20...` (Not used)                                                                          | Vendor specifc data (ASCII)                                         |\n| 128-255 | 128  | Reserved                          | `0x00 0x00 0x00...`                                                                                     | Reserved                                                            |\n\n## EEPROM1 layout\n\n| address | size | name                              | default value                        | description                                                 |\n| ------- | ---- | --------------------------------- | ------------------------------------ | ----------------------------------------------------------- |\n|         |      | **DIAGNOSTIC AND CONTROL FIELDS** |                                      |                                                             |\n| 0-1     | 2    | Temp High Alarm                   | `0x64 0x00` (100℃)                   | Value expressed in two's complement                         |\n| 2-3     | 2    | Temp Low Alarm                    | `0xCE 0x00` (-50℃)                   | Value expressed in two's complement                         |\n| 4-5     | 2    | Temp High Warning                 | `0x55 0x00` (85℃)                    | Value expressed in two's complement                         |\n| 6-7     | 2    | Temp Low Warning                  | `0xD8 0x00` (-40℃)                   | Value expressed in two's complement                         |\n| 8-9     | 2    | Voltage High Alarm                | `0x8C 0xA0` (3.6V)                   | Value expressed in volt subunits[^subunit]                  |\n| 10-11   | 2    | Voltage Low Alarm                 | `0x75 0x30` (3.0V)                   | Value expressed in volt subunits[^subunit]                  |\n| 12-13   | 2    | Voltage High Warning              | `0x88 0xB8` (3.5V)                   | Value expressed in volt subunits[^subunit]                  |\n| 14-15   | 2    | Voltage Low Warning               | `0x79 0x18` (3.1V)                   | Value expressed in volt subunits[^subunit]                  |\n| 16-17   | 2    | Bias High Alarm                   | `0xAF 0xC8` (90mA)                   | Value expressed in milliampere subunits[^subunit]           |\n| 18-19   | 2    | Bias Low Alarm                    | `0x00 0x00` (0mA)                    | Value expressed in milliampere subunits[^subunit]           |\n| 20-21   | 2    | Bias High Warning                 | `0x88 0xB8` (70mA)                   | Value expressed in milliampere subunits[^subunit]           |\n| 22-23   | 2    | Bias Low Warning                  | `0x00 0x00` (0mA)                    | Value expressed in milliampere subunits[^subunit]           |\n| 24-25   | 2    | TX Power High Alarm               | `0x7B 0x86` (5dBm)                   | Value expressed in watts subunits[^subunit]                 |\n| 26-27   | 2    | TX Power Low Alarm                | `0x27 0x10` (0dBm)                   | Value expressed in watts subunits[^subunit]                 |\n| 28-29   | 2    | TX Power High Warning             | `0x6E 0x17` (4dBm)                   | Value expressed in watts subunits[^subunit]                 |\n| 30-31   | 2    | TX Power Low Warning              | `0x2B 0xD4` (0.1dBm)                 | Value expressed in watts subunits[^subunit]                 |\n| 32-33   | 2    | RX Power High Alarm               | `0x07 0xCB` (-7dBm)                  | Value expressed in watts subunits[^subunit]                 |\n| 34-35   | 2    | RX Power Low Alarm                | `0x00 0x0F` (-28dBm)                 | Value expressed in watts subunits[^subunit]                 |\n| 36-37   | 2    | RX Power High Warning             | `0x06 0x30` (-8dBm)                  | Value expressed in watts subunits[^subunit]                 |\n| 38-39   | 2    | RX Power Low Warning              | `0x00 0x14` (-27dBm)                 | Value expressed in watts subunits[^subunit]                 |\n| 40-55   | 16   | Reserved                          | `0x00 0x00 0x00...`                  | Contains the mac address of the SFP, it could also be empty |\n| 56-59   | 4    | RX_PWR(4) Calibration             | `0x00 0x00 0x00 0x00`                | 4th order RSSI calibration coefficient                      |\n| 60-63   | 4    | RX_PWR(3) Calibration             | `0x00 0x00 0x00 0x00`                | 3rd order RSSI calibration coefficient                      |\n| 64-67   | 4    | RX_PWR(2) Calibration             | `0x00 0x00 0x00 0x00`                | 2nd order RSSI calibration coefficient                      |\n| 68-71   | 4    | RX_PWR(1) Calibration             | `0x00 0x00 0x00 0x00`                | 1st order RSSI calibration coefficient                      |\n| 72-75   | 4    | RX_PWR(0) Calibration             | `0x00 0x00 0x00 0x00`                | 0th order RSSI calibration coefficient                      |\n| 76-77   | 2    | TX_I(Slope) Calibration           | `0x00 0x00`                          | Slope for Bias calibration                                  |\n| 78-79   | 2    | TX_I(Offset) Calibration          | `0x00 0x00`                          | Offset for Bias calibration                                 |\n| 80-81   | 2    | TX_PWR(Slope) Calibration         | `0x00 0x00`                          | Slope for TX Power calibration                              |\n| 82-83   | 2    | TX_PWR(Offset) Calibration        | `0x00 0x00`                          | Offset for TX Power calibration                             |\n| 84-85   | 2    | T(Slope) Calibration              | `0x00 0x00`                          | Slope for Temperature calibration                           |\n| 86-87   | 2    | T(Offset) Calibration             | `0x00 0x00`                          | Offset for Temperature calibration, in units of 256ths °C   |\n| 88-89   | 2    | V(Slope) Calibration              | `0x00 0x00`                          | Slope for VCC calibration                                   |\n| 90-91   | 2    | V(Offset) Calibration             | `0x00 0x00`                          | Offset for VCC calibration                                  |\n| 92-94   | 3    | Reserved                          | `0x00 0x00 0x00`                     | Reserved                                                    |\n| 95      | 1    | CC_DMI                            |                                      | Check code for Base Diagnostic Fields (addresses 0 to 94)   |\n| 96      | 1    | Temperature MSB                   |                                      | Internally measured module temperature                      |\n| 97      | 1    | Temperature LSB                   |                                      |                                                             |\n| 98      | 1    | Vcc MSB                           |                                      | Internally measured supply voltage in transceiver           |\n| 99      | 1    | Vcc LSB                           |                                      |                                                             |\n| 100     | 1    | TX Bias MSB                       |                                      | Internally measured TX Bias Current                         |\n| 101     | 1    | TX Bias LSB                       |                                      |                                                             |\n| 102     | 1    | TX Power MSB                      |                                      | Measured TX output power                                    |\n| 103     | 1    | TX Power LSB                      |                                      |                                                             |\n| 104     | 1    | RX Power MSB                      |                                      | Measured RX input power                                     |\n| 105     | 1    | RX Power LSB                      |                                      |                                                             |\n| 106-109 | 4    | Optional Diagnostics              | `0x00 0x00 0x00 0x00` (No support)   | Monitor Data for Optional Laser temperature and TEC current |\n| 110     | 1    | Status/Control                    | `0x02` (Digital RX LOS)              | Optional Status and Control Bits                            |\n| 111     | 1    | Reserved                          | `0x00`                               | Reserved                                                    |\n| 112-113 | 2    | Alarm Flags                       | Supported                            | Diagnostic Alarm Flag Status Bits                           |\n| 114     | 1    | Tx Input EQ control               | `0x00` (No support)                  | Tx Input equalization level control                         |\n| 115     | 1    | Rx Out Emphasis control           | `0x00` (No support)                  | Rx Output emphasis level control                            |\n| 116-117 | 2    | Warning Flags                     | Supported                            | Diagnostic Warning Flag Status Bits                         |\n| 118-119 | 2    | Ext Status/Control                | `0x00 0x00` (No support)             | Extended module control and status bytes                    |\n|         |      | **GENERAL USE FIELDS**            |                                      |                                                             |\n| 120-126 | 7    | Vendor Specific                   | `0x00 0x00 0x00 0x00 0x00 0x00 0x00` | Vendor specific memory addresses                            |\n| 127     | 1    | Table Select                      | `0x00`                               | Optional Page Select                                        |\n|         |      | **USER WRITABLE EEPROM**          |                                      |                                                             |\n| 128-232 | 105  | Reserved                          | `0x00 0x00 0x00...`                  | Reserved                                                    |\n| 233-240 | 8    | GPON SN                           | Unique in each SFP                   | GPON Serial Number (ME 256)                                 |\n| 241-247 | 7    | Reserved                          | `0x00 0x00 0x00...`                  | Reserved                                                    |\n| 248-255 | 8    | Vendor Control                    | `0x00 0x00 0x00...` (Not used)       | Vendor specific control functions                           |\n\n{% include alert.html content=\"For more information, see the SFF-8472 Rev 11.0 specification.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n# Known Bugs\n- [Works with Broadcom BCM57810S only after solder mod](https://github.com/xvzf/zyxel-gpon-sfp/issues/10)\n- Issue on IPv6 discovery. Not certain whether it is a edge case of a particular ISP or not\n- [Some sticks have a custom password](https://github.com/xvzf/zyxel-gpon-sfp/issues/6)\n- On V2.5 the Lantiq SDK has been updated from 6.4.2 to 7.5.1, breaking upload performance\n\n# Miscellaneous Links\n\n- [Zyxel gpon-sfp](https://github.com/xvzf/zyxel-gpon-sfp)\n- [Zyxel PMG-3000 mod kit](https://github.com/hack-gpon/zyxel-pmg-3000-mod-kit)\n- [Rollback SFP Zyxel con il W3 HUB per risolvere il problema dell'upload cappato](https://forum.fibra.click/d/36541-rollback-sfp-zyxel-con-il-w3-hub-per-risolvere-il-problema-dellupload-cappato)\n"
  },
  {
    "path": "_ont/ont-zyxel-pmg3100-t0.md",
    "content": "---\ntitle: Zyxel PM3100-T0 \nhas_children: false\nlayout: default\nparent: Zyxel\n---\n\n# Hardware Specifications\n\n|              |                 |\n| ------------ | --------------- |\n| Vendor/Brand | Zyxel           |\n| Model        | PM3100-T0       |\n| Chipset      | MediaTek/EcoNet |\n| Flash        |                 |\n| RAM          |                 |\n| System       |                 |\n| 2.5GBaseT    | No              |\n| Optics       | SC/APC          |\n| IP address   |                 |\n| Web Gui      | ✅              |\n| SSH          | ✅              |\n| Telnet       |                 |\n| Serial       |                 |\n| Form Factor  | ONT             |\n\n\n"
  },
  {
    "path": "_ont/ont-zyxel-pmg5100-t0.md",
    "content": "---\ntitle: Zyxel PM5100-T0 \nhas_children: false\nlayout: default\nparent: Zyxel\n---\n\n# Hardware Specifications\n\n|              |                          |\n| ------------ | ------------------------ |\n| Vendor/Brand | Zyxel                    |\n| Model        | PM5100-T0                |\n| Chipset      | MediaTek/EcoNet EN7523OT |\n| Flash        |                          |\n| RAM          |                          |\n| System       |                          |\n| 2.5GBaseT    | Yes                      |\n| Optics       | SC/APC                   |\n| IP address   |                          |\n| Web Gui      | ✅                       |\n| SSH          | ✅                       |\n| Telnet       |                          |\n| Serial       |                          |\n| Form Factor  | ONT                      |\n\n\n{% include image.html file=\"zyxel-pmg5100\\front.jpg\" alt=\"PM5100-T0\" caption=\"PM5100-T0\" %}\n{% include image.html file=\"zyxel-pmg5100\\back.jpg\" alt=\"PM5100-T0\" caption=\"PM5100-T0\" %}\n{% include image.html file=\"zyxel-pmg5100\\port.jpg\" alt=\"PM5100-T0\" caption=\"PM5100-T0\" %}\n{% include image.html file=\"zyxel-pmg5100\\front.jpg\" alt=\"PM5100-T0\" caption=\"PM5100-T0\" %}\n{% include image.html file=\"zyxel-pmg5100\\back-board.jpg\" alt=\"PM5100-T0 Teardown\" caption=\"PM5100-T0 Teardown\" %}\n{% include image.html file=\"zyxel-pmg5100\\front-board.jpg\" alt=\"PM5100-T0 Teardown\" caption=\"PM5100-T0 Teardown\" %}\n\n\n"
  },
  {
    "path": "_ont/ont-zyxel-pmg5318.md",
    "content": "---\ntitle: Zyxel PMG5318\nhas_children: false\nlayout: default\nparent: Zyxel\n---\n\n# Hardware Specifications\n\n|                 |                                  |\n| --------------- | -------------------------------- |\n| Vendor/Brand    | Zyxel                            |\n| Model           | PMG5318                          |\n| Chipset         |                                  |\n| Flash           |                                  |\n| RAM             |                                  |\n| System          |                                  |\n| 2.5GBaseT       | No                               |\n| Optics          | SC/APC                           |\n| IP address      |                                  |\n| Web Gui         |                                  |\n| SSH             |                                  |\n| Telnet          |                                  |\n| Serial          |                                  |\n| Serial baud     |                                  |\n| Serial encoding |                                  |\n| Form Factor     | ONT                              |\n\n## List of software versions\n\n## List of partitions\n\n# Miscellaneous Links\n\n- [B4RN Community Broadband](https://b4rn.org.uk/)\n"
  },
  {
    "path": "_ont/ont-zyxel.md",
    "content": "---\ntitle: Zyxel\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont/serial_dump/fg1000b-11_boot_cfe.txt",
    "content": "D%G----\nBTRM\nV1.0\nR1.0\nL1CD\nMMUI\nMMU9\nDATA\nZBBS\nMAIN\nOTP?\nOTPP\nUSBT\nNAND\nIMG?\nIMGL\nUHD?\nUHDP\nRLO?\nRLOP\nUBI?\nUBIP\nPASS\n----\nHELO\n5.0205p1-1.0.38-163.181\nCPU0\nL1CD\nMMUI\nMMUC\nZBBS\nMAIN\nBoot Strap Register:  0x53008056\nNVRAM memcfg 0x1327\nMCB chksum 0x7217256d, config 0x1327\n\nMemsysInit hpg0_generic_aarch64 3.5.1.1 20171009\nDDR3\n8262CA28 80180000 801A0000 00000000 00000000 0010476E\nMCB rev=0x00000501 Ref ID=0x0476E Sub Bld=0x001\nDram Timing 11-11-11\n\nstart of memsys_begin\nmc_cfg_init(): Initialize the default values on mc_cfg\ninit_memc_dram_profile(): Initializing MEMC DRAM profile\n---------------------------------------------------------------\nMEMC DRAM profile (memc_dram_profile_struct) values:\n====================================================\nPART values:\n  part_speed_grade    = 6 \n  part_size_Mbits     = 2048 (DRAM size in MegaBits)\n  part_row_bits       = 14 (number of row bits)\n  part_col_bits       = 10 (number of column bits)\n  part_ba_bits        = 3 (number of bank bits)\n  part_width_bits     = 16 (DRAM width in bits)\nNUMER OF PARTS:\n  part_num            = 1 (Number of parts)\nTOTAL values:\n  total_size_Mbits    = 2048 (DRAM size in MegaBits)\n  total_cs_bits       = 0 (number of cs bits, for dual_rank mode)\n  total_width_bits    = 16 (DRAM width in bits)\n  total_burst_bytes   = 16 (Number of bytes per DRAM access)\n  total_max_byte_addr = 0xfffffff (Maximum/last DRAM byte address)\n                        (Number of bits in total_max_byte_addr is 28)\n                        (i.e. total_max_byte_addr goes from bit 0 to bit 27)\n  ddr_2T_mode         = 0\n  ddr_hdp_mode        = 1\n  large_page          = 1\n  ddr_dual_rank       = 0\n  cs_mode             = 0\nMEMC timing (memc_dram_timing_cfg_struct) values:\n====================================================\n  MC_CHN_TIM_TIM1_0 register fields:\n    tCwl   = 8\n    tRP    = 11\n    tCL    = 11\n    tRCD   = 11\n  MC_CHN_TIM_TIM1_1 register fields:\n    tCCD_L = 4\n    tCCD   = 4\n    tRRD_L = 6\n    tRRD   = 6\n  MC_CHN_TIM_TIM1_2 register fields:\n    tFAW   = 32\n    tRTP   = 6\n    tRCr   = 39\n  MC_CHN_TIM_TIM1_3 register fields:\n    tWTR_L = 6\n    tWTR   = 6\n    tWR_L  = 12\n    tWR    = 12\n  MC_CHN_TIM_TIM2 register fields:\n    tR2R   = 0\n    tR2W   = 2\n    tW2R   = 2\n    tW2W   = 0\n    tAL    = 0\n    tRFC   = 128\nPoll PHY Status register\nPHY Status= 1\nDisable Auto-Refresh\nrefresh_ctrl_cfg writing to refresh control register (dram_clk_freq_MHz=800 ; ref_rate=0xb6 ; ref_disable=1)\n[0x8018020c] = 0x8000b600\n[0x80180200] = 0x00000305\nEnd of memsys_begin\nAdd/Ctl Alignment\nCoarse Adj=0x087 deg, cmd steps=0x0D4\nreg 0x801A0090 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A0094 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A0098 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A009C set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00A0 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00A4 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00A8 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00AC set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00B0 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00B4 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00B8 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00BC set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00C0 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00C4 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00C8 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00CC set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00D0 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00D4 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00D8 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00DC set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00E0 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00E4 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00E8 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00EC set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00F0 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00F4 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00F8 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A00FC set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A0100 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A0108 set to VDL 0x051 with Fine Adj=0x01 deg\nreg 0x801A010C set to VDL 0x051 with Fine Adj=0x01 deg\nHP RX TRIM\nitrim = 0x0\nlstrim = 0x9\n\nZQ Cal HP PHY\n R in Ohm\n P: Finger=0x364 Term=0x7C Drv=0x27\n N: Finger=0x311 Term=0x70 Drv=0x27\n\nPLL Ref(Hz)=0x02FAF080 UI STEPS=0x06A\n DDR CLK(MHz)=0x31B WL CLK dly(ps)=0x0C8 bitT(ps)=0x274 VDLsize(fs)=0x1724 CLK_VDL=0x022\nstart of memc_init\n[0x80180004] = 0x0110061f\n[0x80180234] = 0x00001101\nEnable Auto-Refresh\nrefresh_ctrl_cfg writing to refresh control register (dram_clk_freq_MHz=800 ; ref_rate=0xb6 ; ref_disable=0)\n[0x8018020c] = 0x0000b600\n[0x80180110] = 0x11100f0e\n[0x80180114] = 0x15141312\n[0x80180118] = 0x19181716\n[0x8018011c] = 0x00001b1a\n[0x80180124] = 0x04000000\n[0x80180128] = 0x08070605\n[0x8018012c] = 0x00000a09\n[0x80180134] = 0x000d0c0b\n Writing to MC_CHN_CFG_CNFG reg; data=0x00000000\n[0x80180100] = 0x00000000\ncfg_memc_timing_ctrl() Called\n[0x80180214] = 0x080b0b0b\n[0x80180218] = 0x04040606\n[0x8018021c] = 0x20000627\n[0x80180220] = 0x06060c0c\n[0x80180224] = 0x12000080\nEnd of memc_init\nstart of pre_shmoo\n[0x80180004] = 0xc110071f\nend of pre_shmoo\n\nSHMOO 28nm\n801A0000 80180800 00000000 00020000 00000000\n\nShmoo WL\n\nOne UI Steps : 0x77\n\ndisable_dram_refresh\nrefresh_ctrl_cfg writing to refresh control register (dram_clk_freq_MHz=800 ; ref_rate=0xb6 ; ref_disable=1)\n[0x8018020c] = 0x8000b600\nauto-clk result = 00B (filter=0C steps)\ninitial CLK shift = 022\nfinal CLK shift   = 00B\n\ndisable_dram_refresh\nrefresh_ctrl_cfg writing to refresh control register (dram_clk_freq_MHz=800 ; ref_rate=0xb6 ; ref_disable=1)\n[0x8018020c] = 0x8000b600\nenable_dram_refresh\nrefresh_ctrl_cfg writing to refresh control register (dram_clk_freq_MHz=800 ; ref_rate=0xb6 ; ref_disable=0)\n[0x8018020c] = 0x0000b600\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 S---------------------------X------------------------------------------------------------------------------------------\n01 S-------------------X--------------------------------------------------------------------------------------------------\n\nShmoo RD En\nFORCED WR ODT = 0x00001800\n DQSN DRIVE PAD CONTROL (from) (to)\n B0 00039ED4 00079ED4\n B1 00039ED4 00079ED4\nB0 RISE UI=1 VDL=0D PICK UI=2 VDL=0D\nB1 RISE UI=1 VDL=1B PICK UI=2 VDL=1B\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 --S----------X+++++++++++++++------------------------------------------------------------------------------------------\n01 --S------------------------X+++++++++++++++----------------------------------------------------------------------------\n\nShmoo RD DQ NP\nDQS :\nB0 VDL=6A ok\nB1 VDL=6A ok\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 -----------------+++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++---------------\n01 -------------------++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++----------\n02 ----------------++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++-----------------\n03 -------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++--------------\n04 -------------------+++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++-------------\n05 ------------------++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++---------------\n06 -----------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------\n07 --------------++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++---------------\n08 -----------------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++-----------\n09 ------------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++---------\n10 --------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++-------------\n11 --------------+++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++---------\n12 -----------------++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++--------\n13 ---------------+++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++--------\n14 --------------+++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++----------\n15 -----------------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++-----------\n\nShmoo RD DQ P\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 ----------------++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++--------------\n01 -------------------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++---------\n02 -----------------+++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++--------------\n03 -------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++--------------\n04 -------------------+++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++-------------\n05 ------------------++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++---------------\n06 -----------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------\n07 --------------++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++---------------\n08 -----------------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++-----------\n09 ------------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++---------\n10 --------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++-------------\n11 --------------++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++--------\n12 ----------------+++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++--------\n13 ---------------+++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++--------\n14 ---------------++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++----------\n15 -----------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------\n\nShmoo RD DQ N\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 -------------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++---------------\n01 --------------+++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++----------\n02 ------------++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++-----------------\n03 -------++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++--------------\n04 --------------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++-------------\n05 -------------++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++-------------\n06 -----------+++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++---------\n07 --------++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++-------------\n08 ---------------++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++-----------\n09 -----------------++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++---------\n10 --------------++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++-----------\n11 -----------+++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++--------\n12 --------------++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++--------\n13 -------------+++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++-------\n14 ------------+++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++--------\n15 --------------+++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++----------\n\nRD DQS adjustments :\nBL0: Start: 0x6A Final: 0x6A\nBL1: Start: 0x6A Final: 0x6A\n\nShmoo WR DQ\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 -----------++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++-------------------\n01 ----------++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------------\n02 -------+++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++------------------------\n03 ---+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++------------------------\n04 --------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++--------------------\n05 ---------+++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++-------------------\n06 -------++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++----------------------\n07 ---++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++-----------------------\n08 -----------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------------\n09 -----------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------------\n10 ----------++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------------\n11 ------+++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++-----------------\n12 ----------++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++---------------\n13 ---------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++------------------\n14 ----------++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++--------------------\n15 -----------+++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------------\n\nShmoo WR DM\nWR DM\n   00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111\n   00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111\n   01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n00 -------+++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++-----------------\n01 ----------++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++----------------\nstart of memsys_end\n[0x80180004] = 0x8110071f\n[0x80180010] = 0x00000008\nend of memsys_end\nDDR test done successfully\nFPS0\n----\nPAR1\nU998\nCOM0\nUBI#\n03E6\nBT98\n0048\n----\nPAR2\nU998\nCOM0\nUBI#\n03E6\nBT98\n0048\n----\nTRY2\nNAN3\nUBI!\nNAN5\n\n\nBase: 5.2_05p1\nCFE version 1.0.38-163.181 for BCM96856 (64bit,SP,LE)\nBuild Date: Tue Jun 16 14:51:57 CST 2020 \nCopyright (C) 2000-2015 Broadcom Corporation.\n\nBoot Strap Register:  0x53008056\nChip ID: BCM68360_B1, Broadcom B53 Dual Core: 1500MHz\nRDP: 1400MHz\nTotal Memory: 268435456 bytes (256MB)\nNAND ECC BCH-4, page size 0x800 bytes, spare size used 64 bytes\nNAND flash device: , id 0xc8d1 block 128KB size 131072KB\nCPU1\nError no gpio number defined for external interrupt 24579!\nDump Current setting of SWREGs\n1.0D, reg=0x00, val=0xc690\n1.0D, reg=0x01, val=0x0d06\n1.0D, reg=0x02, val=0xcb12\n1.0D, reg=0x03, val=0x5372\n1.0D, reg=0x04, val=0x0000\n1.0D, reg=0x05, val=0x0702\n1.0D, reg=0x06, val=0xb000\n1.0D, reg=0x07, val=0x0029\n1.0D, reg=0x08, val=0x0c02\n1.0D, reg=0x09, val=0x0071\n1.8 , reg=0x00, val=0xc690\n1.8 , reg=0x01, val=0x0d06\n1.8 , reg=0x02, val=0xcb12\n1.8 , reg=0x03, val=0x5370\n1.8 , reg=0x04, val=0x0000\n1.8 , reg=0x05, val=0x0702\n1.8 , reg=0x06, val=0xb000\n1.8 , reg=0x07, val=0x0029\n1.8 , reg=0x08, val=0x0c02\n1.8 , reg=0x09, val=0x0071\n1.5 , reg=0x00, val=0xc690\n1.5 , reg=0x01, val=0x0d06\n1.5 , reg=0x02, val=0xcb12\n1.5 , reg=0x03, val=0x5370\n1.5 , reg=0x04, val=0x0000\n1.5 , reg=0x05, val=0x0702\n1.5 , reg=0x06, val=0xb000\n1.5 , reg=0x07, val=0x0029\n1.5 , reg=0x08, val=0x0c02\n1.5 , reg=0x09, val=0x0071\n1.0A, reg=0x00, val=0xc690\n1.0A, reg=0x01, val=0x0d06\n1.0A, reg=0x02, val=0xcb12\n1.0A, reg=0x03, val=0x5370\n1.0A, reg=0x04, val=0x0000\n1.0A, reg=0x05, val=0x0702\n1.0A, reg=0x06, val=0xb000\n1.0A, reg=0x07, val=0x0029\n1.0A, reg=0x08, val=0x0c02\n1.0A, reg=0x09, val=0x0071\nTake PMC out of reset\nwaiting for PMC finish booting\nPMC rev: 3.1.8.427360 running\npmc_init:PMC using DQM mode\nBoard IP address                  : 192.168.1.1:ffffff00  \nHost IP address                   : 192.168.1.100  \nGateway IP address                :   \nRun from flash/host/tftp (f/h/c)  : f  \nDefault host run file name        : vmlinux  \nDefault host flash file name      : bcm963xx_fs_kernel  \nBoot delay (0-9 seconds)          : 1  \nBoot image (0=latest, 1=previous) : 0  \nDefault host ramdisk file name    :   \nDefault ramdisk store address     :   \nDefault DTB file name             :   \nBoard Id                          : 968360BG  \nNumber of MAC Addresses (1-64)    : 11  \nBase MAC Address                  : a0:95:XX:XX:XX:XX  \nPSI Size (1-512) KBytes           : 24  \nEnable Backup PSI [0|1]           : 0  \nSystem Log Size (0-256) KBytes    : 0  \nAuxillary File System Size Percent: 0  \nRNR_TBLS memory allocation (8-13) (MB) : 8  \nFPM_POOL memory allocation (MB)   : 16  \nDHD 0 memory allocation (MB)      : 0  \nDHD 1 memory allocation (MB)      : 0  \nDHD 2 memory allocation (MB)      : 0  \nWLan Feature                      : 0x00  \nVoice Board Configuration (0-31)  :   \nPartition 1 Size (MB)             : 0M  \nPartition 2 Size (MB)             : 0M  \nPartition 3 Size (MB)             : 0M  \nPartition 4 Size (MB) (Data)      : 4M \n\n*** Press any key to stop auto run (1 seconds) ***\nAuto run second count down: 0\n     0100\n     0100\nubi_find_file: got vmlinux.lz  size 2732917\nDecompression LZMA Image OK!\nEntry at 0x0000000000080000\nStarting program at 0x0000000000080000\nubi_find_file: got 96856.dtb  size 2973\ncfe_fs_fetch_file: Success locating 96856.dtb image\n/memory = 0x10000000 bytes @ 0x0\nrdp param1 value 0x2000000 in device tree larger than nvram value 0x1000000. Use device tree value!\nAppending CFE version to dtb, ret:0\nAppending NVRAM to dtb, ret:0"
  },
  {
    "path": "_ont/serial_dump/fs-com-onu1710-1g/bootlog.txt",
    "content": "9601D\nPRELOADER Bismarck 3.5\nII: PLR:c988baff, Build_date:24082711, Toolkit:rsdk-1.5.6-5281-EB-2.6.30-0.9.30.3-131105\nII: Disable OCP Timeout Monitor\nII: Disable LX Timeout Monitor\nII: Enable Triple Synchronizer\nII:cg_cpu_clk_init doneII:cg_spif_clk_init doneII: CPU 300MHz (600/2/0), MEM 325MHz, LX 200MHz, SPIF 25MHz\nII: NOR SPI-F... 5E4016/MMIO16-1/ModeC done\nAK: DRAM AUTO CALIBRATION(20210202)\nAK: ZQ Calibration PassedAK: ZQ Calibration PassedAK: ZQ Calibration PassedAK: ZQ Calibration PassedAK: MR0: 0x00100952\nAK: MR1: 0x00110040\nAK: MR2: 0x00120000\nAK: MR3: 0x00130000\nAK: clear dwdqor\nAK: Bit/max_r_s/max_r_l/max_w_s/max_w_l    Bit/max_r_s/max_r_l/max_w_s/max_w_l(Hex)\n   [ 0]       0      1f       0      17   [16]       0      1f       0      17\n   [ 1]       0      1f       0      19   [17]       0      1f       0      17\n   [ 2]       0      1f       0      17   [18]       0      1f       0      17\n   [ 3]       0      1f       0      17   [19]       0      1f       0      15\n   [ 4]       0      1f       0      19   [20]       0      1f       0      17\n   [ 5]       0      1f       0      17   [21]       0      1f       0      17\n   [ 6]       0      1f       0      19   [22]       0      1f       0      17\n   [ 7]       0      1f       0      17   [23]       0      1f       0      17\n   [ 8]       0      1f       0      19   [24]       0      1f       0      19\n   [ 9]       0      1f       0      19   [25]       0      1f       0      19\n   [10]       0      1f       0      17   [26]       0      1f       0      17\n   [11]       0      1f       0      19   [27]       0      1f       0      19\n   [12]       0      1f       0      19   [28]       0      1f       0      19\n   [13]       0      1f       0      17   [29]       0      1f       0      17\n   [14]       0      1f       0      19   [30]       0      1f       0      19\n   [15]       0      1f       0      17   [31]       0      1f       0      17\nAK: DQ enable delay sync with DQ delay tap.\n    0xb80015D0=0x07070807, 0xb80015D4=0x07080708, 0xb80015D8=0x08070808, 0xb80015DC=0x07080708\nAK: DRAM size = 0x2000000\nAK: Disable read after write function\nAK: Support tREFI divided by 4\nAK: dram auto calibrtaion is done\nII: MEM_PROBE_OK\nII: MEM_XLAT_OK\nII: MEM_TO_REG_OK\nII: MEM_CAL_OK\nII: Change Stack from 0x9f007ff8 to 0x80efffe0\nII: Decompressing U-Boot (0x81c00000 <- 0x9fc179c0)... (187 KB <- 71 KB) OK\nII: Starting U-boot... \n\n\nU-Boot 2011.12.NA (Aug 27 2024 - 11:38:05)\n\nBoard: RTL9601D, CPU:300MHz, LX:200MHx, MEM:325MHz, Type:DDR2\nDRAM: 32 MB\nSPI-F: ZBIT/5E4016/MMIO16-1/ModeC 1x4 MB (plr_flash_info @ 81c2d30c)\nLoading 8192B env. variables from offset 0x2a000\nLoading 8192B env. variables from offset 0x2c000\nLoaded 8192B env. variables from offset 0x2c000\nNet:   LUNA GMAC \nWarning: eth device name has a space!\n\nHit any key to stop autoboot:  2 \b\b\b 1 \b\b\b 0 \nswcore_init\nmulticast_start Using LUNA GMAC  device\nmcast upgrade timeout.\n## Booting kernel from Legacy Image at 94040000 ...\n   Image Name:   Linux Kernel Image\n   Created:      2025-03-20   9:02:52 UTC\n   Image Type:   MIPS Linux Kernel Image (lzma compressed)\n   Data Size:    932625 Bytes = 910.8 KB\n   Load Address: 80000000\n   Entry Point:  80000000\n   Verifying Checksum ... OK\n   Uncompressing Kernel Image ... OK\n\nStarting kernel ...\n\n=================================\nrtk_ldo_init\n=================================\n0xbb000044=0x00000002\n0xbb000130=0x00ec0005\n=================================\nrtk_ims_init\n=================================\ninit started: BusyBox v1.12.4 (2025-03-20 16:59:46 CST)\nstarting pid 149, tty '': '/etc/init.d/rcS'\n=== Start to run rc0 / rc63 ===\n----- do_rc [/etc/init.d/rc2] -----\nMounting /dev/mtdblock3 onto /var/config as the configuration data storage\n----- do_rc [/etc/init.d/rc3] -----\nno need to do reset to default\n------ [-b]Bootup_config ------\nWait for configd initialize 'MsgQ' and 'Shm'... \nset_msgqueue_max_size:180> set msgqidds.msg_qbytes=20600 OK\nset_msgqueue_max_size:180> set msgqidds.msg_qbytes=20600 OK\nFetch mib data (type 8) from program code.\nFetch mib data (type 2) from program code.\nPre-fetch mib data from program default done.\nChecking input file [/var/config/lastgood_hs.xml].\n[OK] Valid config file!\n\n***** config_parser(): dfname=[/etc/config_default_hs.xml](0) loaded *****\n\n***** config_parser(): fname=[/var/config/lastgood_hs.xml](0) loaded *****\n\n[xml_INFO]: Load HS configuration success.\nChecking input file [/var/config/lastgood.xml].\n[OK] Valid config file!\n\n***** config_parser(): dfname=[/etc/config_default.xml](0) loaded *****\n\n***** config_parser(): fname=[/var/config/lastgood.xml](0) loaded *****\n\n[xml_INFO]: Load CS configuration success.\nrunning GPON mode ...\n==== check omci mib\n----- do_rc [/etc/init.d/rc10] -----\n----- do_rc [/etc/init.d/rc14] -----\n/etc/init.d/rc14: line 8: can't create /proc/sys/net/ipv6/conf/all/mc_forwarding: nonexistent directory\n----- do_rc [/etc/init.d/rc32] -----\nMIB chain descriptors checking (total 10) ok !\nrtkbosa: Donât care pon mode, use general file\nmd5sum: can't open '/var/config/rtkbosa_k.bin': No such file or directory\nigmpd is running:  sys_max_port_num =4 .....\ncat: can't open '/var/config/rtkbosa_k_checksum': No such file or directory\nrtkbosa: checksumold = \nrtkbosa: Use general file [/var/config/rtkbosa_k.bin]\nrtkbosa: Version 2.9 (Mar 20 2025 - 17:02:01)\nrtkbosa: Detecting RTL8290B ...\nrtkbosa: Error (0x10): The chip is not found\nrtkbosa: Detecting UX3360 ...\nrtkbosa: Read 0x51.0x80(0x55): 0xFF\nrtkbosa: Read 0x51.0x81(0x58): 0xFF\nrtkbosa: Read 0x51.0x82(0x33): 0xFF\nrtkbosa: Read 0x51.0x83(0x33): 0xFF\nrtkbosa: Read 0x51.0x84(0x36): 0xFF\nrtkbosa: Read 0x51.0x85(0x30): 0xFF\nrtkbosa: Detecting Semtech Series (GN2xL9x) ...\nrtkbosa: Read 0x51.0x7B(0x00): 0x00\nrtkbosa: Read 0x51.0x7C(0x00): 0x00\nrtkbosa: Read 0x51.0x7D(0x00): 0x00\nrtkbosa: Read 0x51.0x7E(0x00): 0x00\nrtkbosa: Detecting Semtech Bosa ID ...\nrtkbosa: A2 Table ff: 0x80 = 0xff ; 0x85 = 0xff ; 0x86 = 0xff\nrtkbosa: A2 Table 2: 0xD1 = 0xa3\nrtkbosa: SEMTECH GN25L95 is Found\nrtkbosa: A2 Table 0x02.0xc0 = 0x1f\nrtkbosa: EEPROM exists, bosa should be working.\n----- do_rc [/etc/init.d/rc34] -----\n----- do_rc [/etc/init.d/rc35] -----\nTurn on phy power...\nnot support poe\n<fMgmtInit:601>the . is not a regular file.\n<fMgmtInit:601>the .. is not a regular file.\n<fMgmtInit:601>the internal is not a regular file.\nModule libigmpipc.so is loaded and inited\nstat failed: /lib/features/internal/bdp_00000002.so\nno hook voice service\nomci_wrapper_msgHandler: devMode 0,receiveState 1,usrLogLvl 1, drvLogLvl 1,sn FSCM¦¼ì\nMIB_Table_Init Init mib table:mib_Me242.so fail, error code is:1...\nMIB_Table_Init Init mib table:mib_Me243.so fail, error code is:1...\nMIB_Table_Init Init mib table:mib_Me350.so fail, error code is:1...\nMIB_Table_Init Init mib table:mib_Me370.so fail, error code is:1...\nMIB_Table_Init Init mib table:mib_Me373.so fail, error code is:1...\nomci_wrapper_activateGpon ioctl failed\nGPON SN is FSCM99a6bcec\nlistening\nsystem(): /bin/echo 1 eth0.2 > /proc/rtl8686gmac/dev_port_mapping\nport set phy-force-power-down port all state disable \nRTK.0> command:\nPlease press Enter to activate this console. starting pid 547, tty '': '/bin/inetd'\nrtk_pon_led_SpecType_set 0\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nRestart IPv6 Filter!\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nUpdate Firewall rule set by user.\nOpen file /var/prefix_info fail !\nError! Note Got prefix yet!\nip6tables v1.2.7a: can't initialize ip6tables table `filter': iptables who? (do you need to insmod?)\nPerhaps iptables or your kernel needs to be upgraded.\nport set phy-force-power-down port all state enable \nRTK.0> command:port set phy-force-power-down port all state disable \nRTK.0> command:iptables v1.2.7a: Couldn't find target `lan_mark'\n\nTry `iptables -h' or 'iptables --help' for more information.\nIllegal target name 'portmapping'.\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nsize of linux : 1282048\nsize of linux : 3932160\ninit_global_parm846::size of g_max_upload_size : 3932160\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nRTNETLINK answers: No such file or directory\nInit System OK for IPV6\n\nstarting pid 546, tty '/dev/ttyS0': '-/bin/sh'\n\n\nBusyBox v1.12.4 (2025-03-20 16:59:46 CST) built-in shell (ash)\nEnter 'help' for a list of built-in commands.\n\n\nPlease enter the username and password.\n\n\nUsername:admin\n\nPassword:*********  (super&123)\n# cat /proc/version\nLinux version 2.6.30.9 (root@svn-onu) (gcc version 4.4.6 (Realtek RSDK-1.5.6p2) ) #1 Thu Mar 20 17:00:24 CST 2025 10.0.52B.2095_FS\n# cat /proc/self/status | grep ^Uid\nUid:\t0\t0\t0\t0\n#\n"
  },
  {
    "path": "_ont/serial_dump/fs-com-onu1710-1g/uboot-env.txt",
    "content": "b0=setenv bootargs ${bootargs_base} ${mtdparts0} ${rst2dfl_flg}; bootm ${img0_kernel}\nb1=setenv bootargs ${bootargs_base} ${mtdparts1} ${rst2dfl_flg}; bootm ${img1_kernel}\nbaudrate=115200\nboot_by_commit=if itest.s ${sw_commit} == 0;then run set_act0;run b0;else run set_act1;run b1;fi\nboot_by_tryactive=if itest.s ${sw_tryactive} == 0;then setenv sw_tryactive 2;setenv sw_active 0;saveenv;run en_wdt;run b0;else setenv sw_tryactive 2;setenv sw_active 1;saveenv;run en_wdt;run b1;fi\nbootargs_base=console=ttyS0,115200\nbootcmd=if itest.s ${sw_tryactive} == 2; then run boot_by_commit;else run boot_by_tryactive;fi\nbootdelay=2\nen_wdt=mw b8003268 e7c00000\nerase_cfgfs=sf erase ${fl_cfgfs} +${fl_cfgfs_sz}\nerase_env=sf erase ${fl_env} +${fl_env_sz};sf erase ${fl_env2} +${fl_env_sz}\nethact=LUNA GMAC\nethaddr=00:E0:4C:86:70:01\nfl_boot_sz=2a000\nfl_cfgfs=2e000\nfl_cfgfs_sz=12000\nfl_env=2a000\nfl_env2=2c000\nfl_env_sz=2000\nfl_kernel1=40000\nfl_kernel1_sz=139000\nfl_kernel2=40000\nfl_kernel2_sz=139000\nfl_rootfs1=179000\nfl_rootfs1_sz=287000\nfl_rootfs2=179000\nfl_rootfs2_sz=287000\nimg0_kernel=94040000\nimg1_kernel=94040000\nipaddr=192.168.123.1\nmtdparts0=mtdparts=rtk_spi_nor_mtd:168K(boot),8K(env),8K(env2),72K(config),1252K@256K(k0),1252K@256K(k1),2588K@1508K(r0),2588K@1508K(r1),4K@0ro,4K@0ro,4K@0ro,4K@0ro,1252K@256K(linux),2588K@1508K(rootfs) root=31:6\nmtdparts1=mtdparts=rtk_spi_nor_mtd:168K(boot),8K(env),8K(env2),72K(config),1252K@256K(k0),1252K@256K(k1),2588K@1508K(r0),2588K@1508K(r1),4K@0ro,4K@0ro,4K@0ro,4K@0ro,1252K@256K(linux),2588K@1508K(rootfs) root=31:7\nmupgrade_en=1\nnetmask=255.255.255.0\nserverip=192.168.123.100\nset_act0=if itest.s ${sw_active} != 0;then setenv sw_active 0;saveenv;fi\nset_act1=if itest.s ${sw_active} != 1;then setenv sw_active 1;saveenv;fi\nstderr=serial\nstdin=serial\nstdout=serial\nsw_active=1\nsw_commit=1\nsw_tryactive=2\nsw_valid0=1\nsw_valid1=1\nsw_version0=10.0.52B.2095\nsw_version1=10.0.52B.2095\ntftp_base=80000000\nupb=tftp ${tftp_base} plr.img && crc32 ${fileaddr} ${filesize} && sf erase 0 +${fl_boot_sz} && sf write ${fileaddr} 0 ${filesize}\nupe=tftp ${tftp_base} uboot-env-98d-eng.bin && sf erase ${fl_env} +${fl_env_sz} && sf write ${fileaddr} ${fl_env} ${fl_env_sz} && sf erase ${fl_env2} +${fl_env_sz} && sf write ${fileaddr} ${fl_env2} ${fl_env_sz}\nupk=tftp ${tftp_base} uImage && crc32 ${fileaddr} ${filesize} && sf erase ${fl_kernel1} +${fl_kernel1_sz} && sf write ${fileaddr} ${fl_kernel1} ${filesize}\nupk1=tftp ${tftp_base} uImage && crc32 ${fileaddr} ${filesize} && sf erase ${fl_kernel2} +${fl_kernel2_sz} && sf write ${fileaddr} ${fl_kernel2} ${filesize}\nupr=tftp ${tftp_base} rootfs && crc32 ${fileaddr} ${filesize} && sf erase ${fl_rootfs1} +${fl_rootfs1_sz} && sf write ${fileaddr} ${fl_rootfs1} ${filesize}\nupr1=tftp ${tftp_base} rootfs && crc32 ${fileaddr} ${filesize} && sf erase ${fl_rootfs2} +${fl_rootfs2_sz} && sf write ${fileaddr} ${fl_rootfs2} ${filesize}\nupt=tftp 80000000 img.tar && upimgtar ${fileaddr} ${filesize}\nupv=tftp 80000000 vm.img;upvmimg ${fileaddr}\nyk=loady 80000000 && cp.b 80000000 81000000 ${filesize} && cmp.b 80000000 81000000 ${filesize} && sf erase ${fl_kernel1} +${fl_kernel1_sz} && sf write 80000000 ${fl_kernel1} ${filesize}\nyr=loady 80000000 && cp.b 80000000 81000000 ${filesize} && cmp.b 80000000 81000000 ${filesize} && sf erase ${fl_rootfs1} +${fl_rootfs1_sz} && sf write 80000000 ${fl_rootfs1} ${filesize}\nyu=loady 80000000 && cp.b 80000000 81000000 ${filesize} && cmp.b 80000000 81000000 ${filesize} && sf erase 0 +${fl_boot_sz} && sf write 80000000 0 ${filesize}\n\nEnvironment size: 3733/8187 bytes\n"
  },
  {
    "path": "_ont/serial_dump/ma5671a_minishell.txt",
    "content": "otop\r\ngtop\r\ndmesg\r\ncapture_omci_message\r\narp\r\ncapture_gtop_log\r\nget_gtop_log\r\npasswd\r\nreboot\r\nlanpsg\r\nget_vlanA\r\nget_vlanB\r\nshow_version.sh\r\ndisplay_version\r\ndisplay_log\r\nmac_learning\r\nGtop_Help\r\nLAN_port_out\r\nLAN_port_in\r\nIQM_dump\r\nGTC_dump\r\nGPE_arbiter_dump\r\nConfiguration\r\nGEM_port\r\nTMU_dump\r\nTMU_EPT_dump\r\nTMU_SBOT_dump\r\nMERGE_dump\r\nUpstream_flow\r\nGPE_capability\r\nGPE_status\r\nGPE_ipv6_Reduction_hash\r\nGPE_ACL_LANE0\r\nGPE_ACL_LANE2\r\nGPE_VLAN_Start_ID\r\nGPE_US_GEM_port\r\nGPE_DS_MC_IPV6\r\nGPE_FID_assignment\r\nGPE_L4_filter\r\nGPE_short_forward_hash\r\nGPE_short_frd_ipv4_mc\r\nGPE_short_frd_MAC_mc\r\nGPE_extended_VLAN\r\nGPE_VLAN_treatment\r\nGPE_LAN_port_General\r\nGPE_LAN_port_Access_Ctr\r\nGPE_LAN_port_OAM\r\nGPE_bridge_port\r\nGPE_LAN_port\r\nGPE_PCP_decoding\r\nGPE_PCP_encoding\r\nGPE_redirection\r\nGPE_bridge\r\nGPE_Counter\r\nOCTRLG_table_dump\r\nGTC_alarms\r\nGTC_counters\r\nMeter\r\nOCTRLG_dump\r\nICTRLG_dump\r\nFSQM_dump\r\nEIM_dump\r\nSSB_dump\r\nStatus\r\nGPE_info\r\nAlloc_ID\r\nTMU_EQT_dump\r\nTMU_SBIT_dump\r\nTMU_TBST_dump\r\nBridge_port_counter\r\nVersion\r\nFW_perfmeter\r\nGPE_exception\r\nGPE_ipv6_Reduction\r\nGPE_ACL_LANE1\r\nGPE_ACL_LANE3\r\nGPE_DS_GEM_port\r\nGPE_DS_MC_IPV4\r\nGPE_tagging_filter\r\nGPE_FID_hash\r\nGPE_learning_limitation\r\nGPE_short_forwardipv4\r\nGPE_short_forwardMAC\r\nGPE_VLAN\r\nGPE_VLAN_rule\r\nGPE_cop_dump\r\nGPE_LAN_port_VLAN\r\nGPE_LAN_port_Trf_Mgmt\r\nGPE_constants\r\nGPE_PMapper\r\nGPE_policer\r\nGPE_DSCP_decoding\r\nGPE_DSCP_encoding\r\nGPE_activity\r\nGPE_MAC_filter\r\nGPE_ethertype_exception\r\nICTRLG_table_dump\r\nBWM_trace\r\nFW_detailed_status\r\nFW_status\r\nset\r\nquit"
  },
  {
    "path": "_ont_epon/bcctv.md",
    "content": "---\ntitle: BCCTV\nhas_children: true\nlayout: default\n---\n\n# BCCTV network\n\nBCCTV (Philippines) is a local Internet Service Provider (ISP) that delivers affordable internet to the masses using EPON technology. The company employs PPPoE to provide internet connections to its clients. The credentials for PPPoE usernames follow a specific format: the customer's surname followed by the last 4 digits of their MAC Address. For example, `JONES4321`. The password is set as `admin` for all users. Most of their ONU devices have default telnet and ssh ports open, with the majority of these devices based on Realtek's `RTL8672`.\n"
  },
  {
    "path": "_ont_epon/bcctv_PNC11C.md",
    "content": "---\ntitle: BCCTV PNC11C\nhas_children: false\nlayout: default\nparent: BCCTV\n---\n\n# Hardware Specifications\n\n|                  |                                            |\n|------------------|--------------------------------------------|\n| Vendor/Brand     | Chengdu Kingtype Electronics               |\n| Model            | PNC11C                                     |\n| ODM              |                                            |\n| ODM Product Code |                                            |\n| Chipset          | BCM55030                                   |\n| Flash            | 16Mb                                       |\n| RAM              | 1Gb DDR3(L) SDRAM                          |\n| CPU              | BCM6848                                    |\n| CPU Clock        |                                            |\n| Bootloader       |                                            |\n| System           | Linux                                      |\n| Load addr        |                                            |\n| HSGMII           | No                                         |\n| Optics           | SC/APC                                     |\n| IP address       | 192.168.2.1                                |\n| Web Gui          | ✅ Username: `super` Password: `kingT#92Su` |\n| SSH              |                                            |\n| Telnet           | ✅                                          |\n| Serial           | ✅                                          |\n| Serial baud      | 115200                                     |\n| Serial encoding  |                                            |\n| Form Factor      | ONT                                        |\n"
  },
  {
    "path": "_ont_epon/free_iliad.md",
    "content": "---\ntitle: Free/Iliad\nhas_children: true\nlayout: default\n---\n\n# Free/Iliad network\n\nIliad's (Italy) PON network is delivered through two types of technology: GPON or EPON where available. The latter is not actually pure 10G-EPON but DPoE (DOCSIS Provisioning over EPON), confirmed by analyzing the physical layer signals.\n\nUsing a Xilinx Kintex 7 FPGA with an integrated logic analyzer, an optical module has been connected to the FPGA's transceiver. The transceiver synchronized successfully and the sync header sequence was the one expected for 10G-EPON: a FEC codeword is a sequence of 31 words. Those words have a sync header binary value of `10` or `01` repeated 27 times corresponding to the original message plus `00, 11, 11, 00` corresponding to the FEC parity information. Discarding the latter part and descrambling the remaining data, the packets have been retrieved.\n\nAs an example, a packet starts with `55 d5 55 1b 3c 07 5f` in hex, which corresponds to a DPoE (10G) preamble (actually it's missing one starting `0x55` byte but the CRC8 at the end is correct nonetheless).\n"
  },
  {
    "path": "_ont_epon/free_iliad_F-MDCONU3A.md",
    "content": "---\ntitle: Free/Iliad F-MDCONU3A (v1)\nhas_children: false\nlayout: default\nparent: Free/Iliad\n---\n\n# Hardware Specifications\n\n|                  |                                 |\n| ---------------- | ------------------------------- |\n| Vendor/Brand     | Free/Iliad                      |\n| Model            | F-MDCONU3A                      |\n| ODM              | ✅                              |\n| ODM Product Code |                                 |\n| Chipset          | BCM55030B2FBG rev B2            |\n| Flash            | W25Q32J (4 MB SPI)              |\n| RAM              | embedded SRAM (DCCM)            |\n| CPU              | ARCompact[^arc-isa], big endian |\n| CPU Clock        |                                 |\n| Bootloader       | TK2000 Boot v3.27               |\n| System           | bare-metal (no OS)              |\n| Load addr        | 0x20000000 (ICCM)              |\n| HSGMII           | No                              |\n| Optics           | SFP w/o MAC                     |\n| IP address       |                                 |\n| Web Gui          |                                 |\n| SSH              |                                 |\n| Telnet           |                                 |\n| Serial           | ✅                              |\n| Serial baud      | 57600                           |\n| Serial encoding  | 8-N-1                           |\n| Form Factor      | ONT                             |\n\nThe BCM55030 is a 10G-EPON DPoE (DOCSIS Provisioning over EPON) ONU/ONT used by Free/Iliad (France) on their FTTH network. The PON side operates in asymmetric 10G/1G mode: downstream at 1577 nm / 10.3125 Gb/s, upstream at 1310 nm / 1.25 Gb/s burst (IEEE 802.3av).\n\nThe BCM55030's UNI (User Network Interface) side should be capable of 4xSGMII (1 GbE) or 1xXAUI (10 GbE) or 1xXFI (10 GbE SFP) or 1xRGMII, but only one SGMII lane is actually routed (1000BASE-X via soldered SFP+ male connector).\n\nUNI link won't go up when connected to a media converter or directly to a NIC. The firmware waits for a valid 1000BASE-X partner before activating the PON side (circular dependency).\n\nThe CPU uses a Harvard architecture: ICCM (Instruction Closely-Coupled Memory) for code execution and DCCM/SRAM for data. Code in ICCM is not readable via the data bus — the `mem/rf` command can only read data memory, not firmware code.\n\n## Serial\n\nThe serial port is easily accessible at TP5 and TP6. A prompt is available without authentication, it is structured as a tree of directories. To navigate type the subdirectory name. To go back type `/` and hit enter. To list available commands type `help` or `?`.\n\n### CLI Permission Levels\n\nThe CLI has a 3-level permission system. By default, UART connects at level 0 (restricted). The **`pl`** (Permission Level) built-in command switches between levels without any authentication:\n\n| Command      | Level | Effect                                    |\n| ------------ | ----- | ----------------------------------------- |\n| `pl reset`   | 0     | Default restricted access                 |\n| `pl alpha`   | 1     | Debug mode — unlocks ~20 additional commands |\n| **`pl omega`** | **2** | **Full manufacturing access — unlocks ALL commands** |\n\nThe `pl` command is a framework built-in keyword (like `help` and `..`) that is processed *before* the permission-checked command tree walk. It never passes through the permission gate, so it works from any level — including the default level 0.\n\nThe permission byte is stored at a single RAM address and persists for the duration of the session. It resets to 0 on reboot. To persist a higher level across reboots, use `fds/write` (available at level 1+) to write to FDS group 4, record 7.\n\n### Command tree\n\nLevel 0 (default — ~60 total commands):\n\n```\n- mac/\n    - epon                  show EPON MAC address\n    - user                  show UNI MAC address\n- alm/\n    - info                  show alarm status\n    - gpio                  show GPIO/channel state\n- debug/\n    - mcast                 dump active classifier rules\n    - mpcp                  dump MPCP BW queue config\n    - nco                   dump NCO sync state\n    - rstp                  dump debug ring buffer\n    - sysd                  dump system event log\n- epon/\n    - eponmac               show EPON MAC address\n    - usermac               show UNI MAC address\n    - dom                   date of manufacture\n    - ponspeed              get/set PON speed mode\n- fds/\n    - erase                 erase FDS banks 2+3 (⚠️)\n- load/\n    - info                  show firmware slot info\n    - commit                activate flashed firmware (⚠️)\n    - setRecoveryPoint      mark Diag as recovery\n    - runRecoveryPoint      prepare boot from recovery\n    - rx                    receive firmware over UART (⚠️)\n- mcast/\n    - igmpinfo              IGMP snooping state\n    - igmpsources           IGMP SSM sources\n- mem/\n    - rf                    read data memory\n- mpcp/\n    - info                  MPCP registration state\n    - failsafe              get/set failsafe mode\n    - oltmac                show OLT MAC address\n- pers/\n    - read                  dump personality data\n- serdes/\n    - sdextlptest           SerDes loopback test\n    - serdesTestInit        init PRBS test\n    - serdesRx              check SerDes RX status\n- stats/\n    - clear                 reset all counters\n    - gather                trigger counter collection\n    - epon                  EPON MAC counters\n    - fifo                  FIFO/queue counters\n    - lif                   laser interface counters\n    - uni                   UNI port counters\n    - xif                   cross-connect counters\n    - statsmode             get/set counter read mode\n- log/\n    - show                  show system event log\n    - level                 get/set log verbosity\n- sysd/\n    - frmdmp                toggle EPON frame dump\n- clionly                   disable all subsystems except CLI (⚠️)\n- clr                       clear terminal\n- ints                      show interrupt status\n- reg                       read CLI register\n- reset                     full system reset (⚠️)\n- set                       write CLI register\n- echo                      echo text\n- sftver                    show firmware version\n```\n\nLevel 1 (`pl alpha` — adds these):\n\n```\n- access/\n    - read                  hardware peripheral bus read (I2C/SPI)\n    - write                 hardware peripheral bus write\n- mdio/\n    - read                  MDIO PHY register read\n    - readlst               list MDIO registers\n    - write                 MDIO PHY register write\n- lue/\n    - lin/\n        - inst              LUE linear lookup\n    - bin/\n        - inst              LUE binary lookup\n- cust/\n    - e                     examine custom data\n    - r                     read custom data\n    - w                     write custom data\n- fds/\n    - info                  FDS bank status\n    - write                 write FDS record (⚠️)\n    - read                  read specific FDS record\n- mem/\n    - rm                    read memory (alternate)\n    - wm                    write 32-bit word to memory (⚠️)\n    - wf                    fill memory region (⚠️)\n    - ef                    erase/zero memory region (⚠️)\n```\n\nLevel 2 (`pl omega` — adds these):\n\n```\n- efuse                     read eFuse OTP memory\n- efusebits                 read eFuse bit-level detail\n- learn/\n    - dump                  dump MAC learning table\n    - flood                 enable/disable flood mode\n    - switch                enable/disable L2 switching\n    - max                   get/set max MAC entries\n    - apply                 apply config to hardware\n- gmc/\n    - le                    multicast config\n    - ld                    multicast config\n- serdes/\n    - sdp                   SerDes PON debug\n    - sdu                   SerDes UNI debug\n    - clk                   SerDes clock config\n    - dump                  dump SerDes debug registers\n- debug/\n    - fc                    flow control debug\n    - epon                  EPON link context dump\n    - learn                 MAC learning engine debug\n    - eap                   EAP-TLS auth debug\n- fifo/\n    - queue                 FIFO queue management\n- eae/\n    - eap                   EAP MAC address\n    - mka                   MKA protocol state\n    - mtime                 MKA timing parameters\n    - klen                  MACsec key length\n- xau/\n    - xcap                  10G AU system capture\n- fec/\n    - auto                  FEC auto-negotiation\n- fds/\n    - append                append FDS record (⚠️)\n    - export                export FDS records\n    - copygroup             copy FDS group (⚠️)\n- mem/\n    - tf                    memory test (destructive) (⚠️)\n- reglist                   list all CLI registers\n- regbits                   show register bit fields\n```\n\n### CLI command reference\n\n#### System\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `sftver` | `sftver` | Print firmware version, chip ID, and DPoE OAM mode. Output: `2000 0000 v3.2.9 (Rel)` / `DPoE OAM: Off`. Build types: 0=Rel, 1=Custom, 2=Beta, 3=Alpha, 4=Eng. |\n| `reset` | `reset` | Full system reset. Gracefully shuts down EPON link, flushes pending FDS writes, logs the reset event with timestamp, then halts the ARC CPU (aux register 0x28). **The ONU reboots.** |\n| `clionly` | `clionly` | Disable all firmware subsystems (EPON, MPCP, DPoE, MACsec) except CLI UART processing. The ONU becomes non-functional for PON but still responds to commands. Requires `reset` to return to normal. |\n| `clr` | `clr` | Clear terminal screen (ANSI escape). |\n| `echo` | `echo [text]` | Echo text back to UART. |\n| `ints` | `ints` | Dump interrupt controller status: 26 IRQ sources with priority levels (3-bit fields), pending/enable bitmaps, ARC STATUS32 E1/E2 bits. |\n| `reg` | `reg [name]` | Read a CLI framework register by name. Without arguments, lists all registers. These are *software* configuration registers, not hardware MMIO. |\n| `set` | `set <name> <value>` | Write a CLI framework register. Value is a uint8 (0–255). Changes are RAM-only, lost on reboot. |\n| `reglist` | `reglist` | List all CLI framework registers with values. *(Level 2)* |\n| `regbits` | `regbits <name>` | Show a register value with individual bit fields expanded. *(Level 2)* |\n\n#### EPON / MAC\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `epon/eponmac` | `epon/eponmac` | Show the EPON MAC address (6 bytes, no separators). This is the MAC used for MPCP registration. Example: `68A378C25F94`. |\n| `epon/usermac` | `epon/usermac` | Show the UNI-side MAC address. On this ONU, identical to the EPON MAC. |\n| `epon/dom` | `epon/dom [year] [month] [day]` | Get or set the Date of Manufacture. Without args, prints current date. With 3 args, writes the date. Output: `Date of Manufacture: 2020-1-15`. |\n| `epon/ponspeed` | `epon/ponspeed [dnrate uprate [port]]` | Get or set the PON speed mode. Without args, shows current speed/FEC config. `dnrate`: 0=1G, 1=2G, 2=10G. `uprate`: 0=1G, 1=10G. `port` (optional): 0=secondary, 1=primary (default). **Persists to flash (FDS) and triggers full EPON link reinitialization.** Free uses asymmetric 10G/1G = `epon/ponspeed 2 0`. |\n| `mac/epon` | `mac/epon` | Same as `epon/eponmac`. |\n| `mac/user` | `mac/user` | Same as `epon/usermac`. |\n\n#### MPCP\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `mpcp/info` | `mpcp/info` | Show MPCP registration state and slot count. Output is JSON-like: `[[state,slots]]` per LLID. States: 1=WAITING (unregistered), 2=TRANSITION (discovery), 3=REGISTERED. Example: `[[1,32]]` = waiting, 32 slots. |\n| `mpcp/oltmac` | `mpcp/oltmac` | Show the OLT MAC address from the last MPCP registration. `000000000000` = never registered. |\n| `mpcp/failsafe` | `mpcp/failsafe [mode]` | Get or set the MPCP failsafe mode. Controls ONU behavior on registration failure/timeout. Without args, shows current mode. |\n\n#### Memory\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `mem/rf` | `mem/rf <addr> [count]` | Read `count` bytes (default 4) from data memory at `addr`. Address is passed as-is; displayed address adds 0x80000 (cosmetic). Due to Harvard architecture, only reads DCCM/SRAM — cannot read ICCM (firmware code). Wraps every 512 kB. Example: `mem/rf 0x2003e174 4` → `200be174: 09 9b ff ff`. |\n| `mem/wm` | `mem/wm <addr> <value>` | Write a 32-bit word to memory. *(Level 1)* **Direct write to arbitrary address — can corrupt state or crash.** |\n| `mem/wf` | `mem/wf <addr> <value> <count>` | Fill memory region with a value. *(Level 1)* |\n| `mem/ef` | `mem/ef <addr> <count>` | Erase (zero-fill) a memory region. *(Level 1)* |\n| `mem/tf` | `mem/tf <addr> <count>` | Memory test with write/readback patterns. Destructive. *(Level 2)* |\n\n#### Statistics\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `stats/epon` | `stats/epon` | Show EPON MAC counters for all 32 LLIDs (18 TX + 15 RX per LLID) plus 6 global counters. Counters are 64-bit in software mode, 32-bit in register mode. |\n| `stats/uni` | `stats/uni` | Show UNI port counters (PHY1: 50 counters × 4 channels). |\n| `stats/lif` | `stats/lif` | Show laser interface counters (PHY3: 47 counters per channel). All zeros when PON inactive. |\n| `stats/xif` | `stats/xif` | Show cross-connect interface counters (PHY2: 30 counters per channel) plus SerDes config words. |\n| `stats/fifo` | `stats/fifo` | Show FIFO/DMA queue counters with channel occupancy and throughput. |\n| `stats/clear` | `stats/clear` | Reset ALL statistics counters to zero (EPON, PHY, MACsec, channel). Silent on success. |\n| `stats/gather` | `stats/gather [mode]` | Get or set the periodic stats collection mode. Output: `Gather N`. |\n| `stats/statsmode` | `stats/statsmode [mode]` | Get or set counter read mode. 0 = Software (64-bit accumulated buffers), 1 = Register (32-bit direct HW read). Output: `statistic mode 0(Software(64bit))`. |\n\n#### Firmware / Flash\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `load/info` | `load/info` | Show all firmware slots (Boot, App 0/1/2, Diag) with version, size, CRC, build timestamp, and pass/fail status. `pass` = valid CRC, `fail` = bad CRC or empty slot (0xFFFFFFFF). See output example below. |\n| `load/rx` | `load/rx` | Enter raw binary firmware receive mode over UART. See [Firmware Flash Protocol](#firmware-flash-protocol). |\n| `load/commit` | `load/commit` | Activate the most recently flashed firmware by swapping the active bank pointer in FDS. Must be followed by `reset`. |\n| `load/setRecoveryPoint` | `load/setRecoveryPoint` | Mark the Diag slot as a valid recovery point. Verifies CRC first. Output: `OK` or `FAIL`. |\n| `load/runRecoveryPoint` | `load/runRecoveryPoint` | Prepare boot from the recovery point. Output: `Ready to run recovery point, please reset` or `No recovery load to jump to`. Must be followed by `reset`. |\n\n#### FDS (Flash Data Storage)\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `fds/erase` | `fds/erase` | **Erase FDS banks 2 (events) and 3 (provisioning).** Loses DPoE config (VLANs, classifiers) and event history. Bank 0 (firmware) and bank 1 (personality/MAC) are preserved. ONU must be re-provisioned by OLT after reboot. |\n| `fds/info` | `fds/info` | Show FDS bank status (active bank, record count, free space). *(Level 1)* |\n| `fds/read` | `fds/read <group> <record> [sub]` | Read a specific FDS record by group/record/sub IDs. *(Level 1)* |\n| `fds/write` | `fds/write <group> <record> <data...>` | Write data to an FDS record. *(Level 1)* |\n| `fds/export` | `fds/export [group]` | Export FDS records as hex dump. *(Level 2)* |\n\n#### Alarms / Debug\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `alm/info` | `alm/info` | Show current alarm status (MpcpFErr, OnuReset, UniLinkDown, PonPortLos, etc.). |\n| `alm/gpio` | `alm/gpio` | Show GPIO/channel states. On the BCM55030, LEDs are controlled through EPON MAC queue-to-pin mapping, not raw GPIO. |\n| `debug/mpcp` | `debug/mpcp` | Dump MPCP bandwidth queue config for both PON lanes: per-queue VLAN, min/max BW, priority, scheduling mode (Strict/Weighted), total BW. |\n| `debug/mcast` | `debug/mcast` | Dump active DPoE classifier rules (8 slots with rule type, VLAN, priority, match value). |\n| `debug/nco` | `debug/nco` | Dump NCO (Numerically Controlled Oscillator) synchronization state, used for MPCP timestamp generation. |\n| `debug/rstp` | `debug/rstp` | Dump debug ring buffer (32 timestamped event entries). |\n| `debug/sysd` | `debug/sysd` | Dump system event log from FDS. Same as `log/show`. |\n| `debug/epon` | `debug/epon` | Dump full EPON link context: LLID state, encryption, cipher config, MACsec SA. *(Level 2)* |\n| `debug/eap` | `debug/eap` | Dump EAP-TLS authentication state: TLS handshake, certificate, RSA sign. *(Level 2)* |\n| `log/show` | `log/show` | Show system event log with timestamps: MpcpFErr, OnuReset, UniLinkDown, PonPortLos, etc. |\n| `log/level` | `log/level [level]` | Get or set log verbosity level (0–255). Without args, shows current level. Not persistent. |\n\n#### Multicast\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `mcast/igmpinfo` | `mcast/igmpinfo` | Show IGMP snooping state: enabled/disabled, per-group forwarding qualifier, IPv4 flag, group address, SSM domain bitmap, group state, timer values. Supports IGMPv1/v2/v3 and MLDv1/v2 (RFC 3376). |\n| `mcast/igmpsources` | `mcast/igmpsources` | Show IGMP Source-Specific Multicast (SSM) source entries: in-use flag, IPv4 flag, SSM ID, source IP. |\n\n#### Personality\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `pers/read` | `pers/read` | Dump personality data from FDS: 34 records across multiple groups (MAC addresses, serial number, SerDes calibration, crypto certificates, provisioning defaults) + 47 SerDes PHY calibration blocks. Total: ~49 KB. |\n\n#### SerDes\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `serdes/sdextlptest` | `serdes/sdextlptest [lane]` | Run PRBS external loopback test on a SerDes lane (0–3, PON lanes only). Enables loopback, runs test, dumps debug registers (0x60–0x7D), disables loopback. |\n| `serdes/dump` | `serdes/dump` | Dump SerDes debug registers: PON lane (0x70–0x7D) and UNI lane (0x60–0x6D). *(Level 2)* |\n\n#### Hardware access (Level 1+)\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `access/read` | `access/read` | Read from the hardware peripheral bus (I2C/SPI/MDIO). *(Level 1)* |\n| `access/write` | `access/write` | Write to the hardware peripheral bus. *(Level 1)* |\n| `mdio/read` | `mdio/read <phy> <reg>` | Read a PHY register via MDIO bus. Supports Clause 22 and Clause 45. *(Level 1)* |\n| `mdio/write` | `mdio/write <phy> <reg> <value>` | Write a PHY register via MDIO bus. *(Level 1)* |\n| `efuse` | `efuse` | Read and display eFuse (OTP) contents: chip MAC, serial number, manufacturing trim values. *(Level 2)* |\n| `efusebits` | `efusebits` | Display eFuse bit-level detail. *(Level 2)* |\n\n#### MACsec / EAP (Level 2)\n\n| Command | Syntax | Description |\n| ------- | ------ | ----------- |\n| `eae/eap` | `eae/eap` | Show EAP MAC address used for EAP-TLS authentication. |\n| `eae/mka` | `eae/mka` | Show MKA (MACsec Key Agreement) protocol state and MKPDU source address. |\n| `eae/mtime` | `eae/mtime` | Show MKA timing parameters (hello interval, lifetime, SAK rekey interval). |\n| `eae/klen` | `eae/klen` | Show MACsec key length config (AES-GCM-128 or AES-GCM-256). |\n\n### PON speed mode encoding\n\n| dnrate | uprate | Mode | Description |\n| ------ | ------ | ---- | ----------- |\n| 0 | 0 | 1G/1G | Standard EPON |\n| 1 | 0 | 2G/1G | Mixed mode |\n| 2 | 0 | 10G/1G | Asymmetric 10G-EPON (Free/Iliad) |\n| 2 | 1 | 10G/10G | Symmetric 10G-EPON |\n\n### `load/info` output\n\n```\nTK2000 APP 3.27 May 13 2016 02:48:05  Chip: 4701 B2110816\nMode: App Normal\nEPON MAC: 0x8C97EA6C17AC\n\nExecuting: NA\n2000 0001 v3.2.7 (Rel)\nSize: 319044 CRC: 0x2FAF887F\nType: 02 Subtype 0C Flags 04\nStream: 112 Revision: 131152\nTime: 2016-05-18 01:28:44Z\n\nBoot: pass\n2000 0000 v3.2.7 (NA)\nSize: 42896 CRC: 0xC87371F8\nType: 01 Subtype 0C Flags 04\nStream: 114 Revision: 127457\nTime: 2016-01-20 05:45:49Z\n\nApp 0: fail\nFFFF 0000 vFF.FF.FFFF (NA)\nSize: 4294967258 CRC: 0xFFFFFFFF\nType: FF Subtype FF Flags FF\nStream: 4294967295 Revision: 4294967295\nTime: 65535-255-255 255:255:255Z\n\nApp 1: pass\n2000 0001 v3.2.7 (Rel)\nSize: 319044 CRC: 0x2FAF887F\nType: 02 Subtype 0C Flags 04\nStream: 112 Revision: 131152\nTime: 2016-05-18 01:28:44Z\n\nApp 2: pass\n2000 0001 v3.2.9 (Rel)\nSize: 319240 CRC: 0x3FBE2A30\nType: 02 Subtype 0C Flags 04\nStream: 116 Revision: 167733\nTime: 2019-03-13 01:47:37Z\n\nDiag: pass\n2000 0001 v3.2.7 (Rel)\nSize: 319044 CRC: 0x2FAF887F\nType: 02 Subtype 0C Flags 04\nStream: 112 Revision: 131152\nTime: 2016-05-18 01:28:44Z\n```\n\n## Firmware Flash Protocol\n\nThe `load/rx` command accepts a firmware image over UART using a raw binary transfer (no XMODEM, no handshake):\n\n1. Wait for the `2000/>` prompt\n2. Send `load/rx\\r`\n3. ONU responds: `Begin binary transfer...`\n4. Send the TKF image as raw binary at 57600 baud (~55 seconds for 319 KB)\n5. ONU responds: `Transfer complete: N bytes received`\n6. Send `load/commit\\r` to activate the new slot\n7. Send `reset\\r` to reboot\n\nThe firmware image must be wrapped in a TKF (Teknovus) container:\n\n```\n[header 39 bytes] [payload N bytes] [CRC32 4 bytes]\n```\n\nThe trailing CRC32 covers the entire header+payload (standard IEEE 802.3 CRC, big-endian). The ONU writes to App 0 and App 1 slots in rotation. There is no flow control and no error correction — the UART link must be reliable.\n\n## List of partitions\n\nThe flash memory (W25Q32J, 4 MB SPI) has 5 regions. Each application section starts with a 39-byte TKF header and ends with its CRC.\n\n| Section    | Start address    | End address      | Size           | Version |\n| ---------- | ---------------- | ---------------- | -------------- | ------- |\n| Bootloader | 0x000000         | 0x00A790         | 42 KB          | v3.27   |\n| FDS/Config | 0x00A790         | 0x120000         | ~460 KB        | —       |\n| App 1      | 0x120027         | 0x16DE6B         | 319 KB         | v3.2.7  |\n| App 2      | 0x1A0027         | 0x1EDF2F         | 319 KB         | v3.2.9  |\n| Diag       | 0x270027         | 0x2BDE6B         | 319 KB         | v3.2.7  |\n\n(End address is non-inclusive)\n\nApp slots are located at 512 KB (0x80000) intervals. The CPU can address only 512 KB of flash at a time (verified by `mem/rf` wrapping behavior). The FDS (Flash Data Storage) region between the bootloader and App 1 contains personality records, MAC addresses, SerDes configuration, and CLI config data (34 known FDS record types).\n\n# Useful files and binaries\n\n# EEPROM\n\nThere is an SFP plug on the UNI side with an embedded EEPROM.\n\n## EEPROM layout\n\n```\n00000000  03 04 00 00 00 00 00 00  00 00 00 00 0a 00 00 00  |................|\n00000010  00 00 00 00 46 52 45 45  42 4f 58 00 00 00 00 00  |....FREEBOX.....|\n00000020  00 00 00 00 00 8c 97 ea  46 2d 4d 44 43 4f 4e 55  |........F-MDCONU|\n00000030  33 41 00 00 00 00 00 00  30 32 00 00 00 00 00 38  |3A......02.....8|\n00000040  00 00 00 00 38 36 38 38  30 32 4a 32 30 32 33 34  |....868802J20234|\n00000050  36 32 39 35 32 30 30 36  30 39 30 30 00 00 00 ec  |629520060900....|\n00000060  38 36 38 38 30 32 4a 32  30 32 33 34 36 32 39 35  |868802J202346295|\n00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|\n00000080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|\n*\n00000100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|\n*\n00000200\n```\n\n# Miscellaneous Links\n\n![](https://web.archive.org/web/20230609184811/https://xtech.nikkei.com/dm/article/NEWS/20110121/188932/Broadcom_4.jpg)\n\n[^arc-isa]: *ARCompact Instruction Set Architecture Programmer's Reference* http://me.bios.io/images/d/dd/ARCompactISA_ProgrammersReference.pdf\n"
  },
  {
    "path": "_ont_epon/free_iliad_F-MDCONU5A.md",
    "content": "---\ntitle: Free/Iliad F-MDCONU5A (v2)\nhas_children: false\nlayout: default\nparent: Free/Iliad\n---\n\n# Hardware Specifications\n\n|                  |             |\n| ---------------- | ----------- |\n| Vendor/Brand     | Free/Iliad  |\n| Model            | F-MDCONU5A  |\n| ODM              | ✅          |\n| ODM Product Code |             |\n| Chipset          | BCM55030    |\n| Flash            |             |\n| RAM              |             |\n| CPU              |             |\n| CPU Clock        |             |\n| Bootloader       |             |\n| System           |             |\n| Load addr        |             |\n| HSGMII           | No          |\n| Optics           | SFP w/o MAC |\n| IP address       |             |\n| Web Gui          |             |\n| SSH              |             |\n| Telnet           |             |\n| Serial           |             |\n| Serial baud      |             |\n| Serial encoding  |             |\n| Form Factor      | ONT         |"
  },
  {
    "path": "_ont_epon/free_iliad_P-MDONU4B.md",
    "content": "---\ntitle: Free/Iliad P-MDONU4B (pro)\nhas_children: false\nlayout: default\nparent: Free/Iliad\n---\n\n# Hardware Specifications\n\n|                 |                      |\n| --------------- | -------------------- |\n| Vendor/Brand    | Free/Iliad P-MDONU4B |\n| Model           | P-MDONU4B            |\n| ODM             |                      |\n| Chipset         |                      |\n| Flash           |                      |\n| RAM             |                      |\n| CPU             |                      |\n| CPU Clock       |                      |\n| Bootloader      |                      |\n| System          |                      |\n| Load addr       |                      |\n| XGMII/XSGMII    | Yes                  |\n| 10GBaseX        | Yes                  |\n| Optics          | SFP w/o MAC          |\n| IP address      |                      |\n| Web Gui         |                      |\n| SSH             |                      |\n| Telnet          |                      |\n| Serial          |                      |\n| Serial baud     |                      |\n| Serial encoding |                      |\n| Form Factor     | ONT                  |\n\n"
  },
  {
    "path": "_ont_xgs/ont-ALL-BM410-XGSPON-GBIC.md",
    "content": "---\ntitle: ALLNET ALL-BM410-XGSPON-GBIC\nhas_children: false\nlayout: default\nparent: ALLNET\n---\n\n# Hardware Specifications\n\n|                  |                                                                                   |\n| ---------------- | --------------------------------------------------------------------------------- |\n| Vendor/Brand     | ALLNET                                                                            |\n| Model            | ALL-BM410-XGSPON-GBIC                                                             |\n| ODM              | CIG                                                                               |\n| Chipset          | Cortina CA8271A                                                                   |\n| Flash            | 128 MB (MX35LF1GE4                                                                |\n| RAM              | 128 MB                                                                            |\n| CPU              | Taroko V0.2 (MIPS)                                                                |\n| CPU Clock        | 500MHz                                                                            |\n| Bootloader       | SATURN u-boot                                                                     |\n| System           | Custom Yocto Linux by Cortina (Saturn SDK) based on Kernel 4.4 Saturn-sfpplus-r1  |\n| Optics           | SC/APC                                                                            |\n| IP address       | 192.168.100.1/24                                                                  |\n| Web Gui          | ❌ no                                                                             |\n| SSH              | ❌ no                                                                             |\n| Telnet           | ✅ yes                                                                            |\n| Serial           | untested                                                                          |\n| Form Factor      | miniONT SFP                                                                       |\n\nThis SFP module is made by CIG, it also has a CIG MAC address, and is identical\nto the [FS XGS-ONU-25-20NI](../ont-fs-XGS-ONU-25-20NI/).\nSee also its page for further information.\n\n{% include image.html file=\"ALL-BM410-XGSPON-GBIC/top.jpg\" alt=\"ALL-BM410-XGSPON-GBIC top\" caption=\"ALLNET ALL-BM410-XGSPON-GBIC top\" %}\n\n{% include image.html file=\"ALL-BM410-XGSPON-GBIC/bottom.jpg\" alt=\"ALL-BM410-XGSPON-GBIC bottom\" caption=\"ALLNET ALL-BM410-XGSPON-GBIC bottom\" %}\n\n\n## Login via Telnet\n\nThe SFP module has a telnetd running on `192.168.100.1` port `23`.\nTo connect to its IP a fibre cable has to be connected!\n\n| User                | Password (Enable Password)             |\n| ------------------- | -------------------------------------- |\n| SN (`ALLGNNNNNNNN`) | 8 digit HMAC-MD5 based on Uppercase SN |\n\nUse the following form to generate the password:\n\n{% include cig_password_xgspon.html password_len=\"8\" %}\n\n\nAfter logging in via Telnet, you will first access the MiniShell with user\nprivileges:\n```\nONT>\n```\n\nTo do anything at all, you have to enter the elevated shell, i.e. execute the\n`enable` command:\n```\nONT> enable\n#ONT>\n```\n\n## Change the GPON serial number\n\nThe default GPON serial number is `ALLGYYXNNNNN` and is equal to the serial\nnumber printed on the label of the SFP+ module.  \n(`ALLG` = vendor, `YY` = manufacturing year, `X` = manufacturing month maybe, `NNNNN` = sequential number)\n\nWhen connected via Telnet (and `enable`d) the GPON serial number can be read and\nchanged using the `/system/misc/eqsn` command.\nA reboot is required for the changes to take effect.\n\n**ATTENTION:** changing the GPON serial number will also change the Telnet login\nusername and password.\n\ne.g. to change the GPON serial number from `ALLG24NNNNNN` to `AAAANNNNNNNN`:\n```\n#ONT>/system/misc/eqsn get\neqsn: ALLG24NNNNNN\n#ONT>/system/misc/eqsn set \"AAAANNNNNNNN\"\n---ATECMDRESULT--- OK\n#ONT>/system/shell/\n#ONT/system/shell>reboot\n\n```\n\nThe GPON serial number currently in use can be seen with the\n`/traffic/pon/show onu` command:\n```\n#ONT>/traffic/pon/show onu\n\n------------------------- ONU INFO --------------------------\n\nOnu id 65535\nsdThreshold:   0\nsfThreshold:   0\nTO1:   80000\nTO2:   1\neqd:   0\nSerial Number(vendor code): ALLG\nSerial Number(sn):          24401234\nPassword:                   41 42 43 44 45 46 47 48 49 4a\nRegistration ID:           0x44454641554c540000000000000000000000000000000000000000000000000000000000\n------------------------- INFO END --------------------------\n\n\n\n\n\n```\n\n\n### Linux root shell\n\nLinux shell commands (including `sh`) can be executed from the `/system/shell` menu:\n\n```\n#ONT>/system/shell\n#ONT/system/shell>uname -a\nLinux saturn-sfpplus-eng 4.4.198.saturn-sfpplus-r1.0.2.8 #1 Mon Feb 5 13:34:49 CST 2024 mips GNU/Linux\n#ONT/system/shell>whoami\nroot\n#ONT>sh\n/ #\n```\n"
  },
  {
    "path": "_ont_xgs/ont-ECIN-EN-XGSFPP-OMAC-v1.md",
    "content": "---\ntitle: E.C.I. Networks EN-XGSFPP-OMAC v1\nhas_children: false\nredirect_to: /xgs/ont-fs-XGS-ONU-25-20NI\nlayout: default\nparent: E.C.I. Networks\n---"
  },
  {
    "path": "_ont_xgs/ont-allnet.md",
    "content": "---\ntitle: ALLNET\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont_xgs/ont-cig-XG-99S.md",
    "content": "---\ntitle: CIG XG-99S\nhas_children: false\nredirect_to: /xgs/ont-fs-XGS-ONU-25-20NI\nlayout: default\nparent: CIG\n---"
  },
  {
    "path": "_ont_xgs/ont-cig.md",
    "content": "---\ntitle: CIG\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont_xgs/ont-ecin.md",
    "content": "---\ntitle: E.C.I. Networks\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont_xgs/ont-fs-XGS-ONU-25-20NI-cli.md",
    "content": "---\ntitle: CLI command tree (XGS-ONU-25-20NI)\nhas_children: false\nlayout: default\nparent: FS.com Generic Compatible XGSPON Stick ONU with MAC SFP+ (XGS-ONU-25-20NI)\n---\n\n# Command tree\nThis stick offers a MiniShell in addition to the normal linux shell.\n\nAvailable after `ONT>enable`.\n\n## Version R4.4.20.022\nCommands offered by this firmware version MiniShell are as follows:\n\n{% include serial_dump.html file=\"fs-XGS-ONU-25-20NI_minishell.txt\" alt=\"FS.com XGS-ONU-25-20NI minishell\" title=\"FS.com XGS-ONU-25-20NI minishell\" %}\n"
  },
  {
    "path": "_ont_xgs/ont-fs-XGS-ONU-25-20NI.md",
    "content": "---\ntitle: FS.com Generic Compatible XGSPON Stick ONU with MAC SFP+ (XGS-ONU-25-20NI)\nhas_children: true\nlayout: default\nparent: FS.com\n---\n\n# Hardware Specifications\n\n|                  |                                                                            |\n| ---------------- | -------------------------------------------------------------------------- |\n| Vendor/Brand     | FS                                                                         |\n| Model            | XGS-ONU-25-20NI                                                            |\n| ODM              | CIG                                                                        |\n| ODM Product Code | XG-99S                                                                     |\n| Chipset          | Cortina CA8271A                                                            |\n| Flash            | MX35LF1GE4AB 128MB                                                         |\n| RAM              | 128MB                                                                      |\n| CPU              | Taroko V0.2 (MIPS)                                                         |\n| CPU Clock        | 500MHz                                                                     |\n| Bootloader       | SATURN uboot                                                               |\n| System           | Custom Linux by Cortina (Saturn SDK) based on Kernel 4.4 Saturn-sfpplus-r1 |\n| 2.5GBaseX        | Yes                                                                        |\n| XGMII/XSGMII     | Yes                                                                        |\n| Optics           | SC/APC                                                                     |\n| IP address       | 192.168.100.1                                                              |\n| Web Gui          |                                                                            |\n| SSH              | No                                                                         |\n| Telnet           | ✅                                                                        |\n| Serial           | ✅                                                                        |\n| Serial baud      | 115200                                                                     |\n| Serial encoding  | 8-N-1                                                                      |\n| Form Factor      | miniONT SFP                                                                |\n\n{% include image.html file=\"XGS-ONU-25-20NI/front.jpg\" alt=\"XGS-ONU-25-20NI front plate\" caption=\"XGS-ONU-25-20NI front plate\" %}\n{% include image.html file=\"XGS-ONU-25-20NI/internal.jpg\" alt=\"XGS-ONU-25-20NI internal\" caption=\"XGS-ONU-25-20NI internal layout\" %}\n\n## Serial\n\nThe stick has a TTL 3.3V UART console (configured as 115200 8-N-1) that can be accessed from the SFP connector, but no components are mounted.\n\nThe UART can be accessed by any of the following methods.\n- Touch the needle to a specific point\n- Shorting a specific pad to access from SFP\n\n### Access from PCB\nThe UART can be accessed by connecting a wire or touching a needle to the following points.\n\n{% include image.html file=\"XGS-ONU-25-20NI/UART_needle.png\" alt=\"XGS-ONU-25-20NI UART Touch point\" caption=\"XGS-ONU-25-20NI UART Touch point\" %}\n\n### Access from SFP\nBy shorting these two points with solder, you can access the UART from SFP pins 2 and 7.\n\n| USB - TTL Adapter     | SFP Connector (Molex, etc) |\n| --------------------- | -------------------------- |\n| Vcc (3.3V)            | pin #15 , #16              |\n| TX                    | pin #7                     |\n| RX                    | pin #2                     |\n| GND                   | pin #10                    |\n\n{% include alert.html content=\"USB TTL adapter may not work due to insufficient power supply. If possible, obtain 3.3V from a dedicated power supply instead of the USB TTL adapter.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n{% include image.html file=\"XGS-ONU-25-20NI/UART_SFP.png\" alt=\"XGS-ONU-25-20NI UART Short point\" caption=\"XGS-ONU-25-20NI UART Short point\" %}\n\n{% include image.html file=\"XGS-ONU-25-20NI/UART_bridge.png\" alt=\"XGS-ONU-25-20NI UART solder bridge\" caption=\"XGS-ONU-25-20NI UART solder bridge\" %}\n\n## Firmware is interchangeable with\nThe firmware is compatible with the following.\n- CIG XG-99S\n- CIG XE-99S (10G-EPON mode)\n- ECIN EN-XGSFPP-OMAC v1\n\n## List of software versions\nAvailable from `#ONT/system>ontver build` and `#ONT/system/shell>cat /etc/version`.\n- R4.4.20.016 (from FS.com docs)\n- R4.4.20.018 - 20230426061821\n- R4.4.20.022 - 20230612033149\n\n## List of partitions\n\n| dev    | size     | erasesize | name              |\n| ------ | -------- | --------- | ----------------- |\n| mtd0   | 00040000 | 00020000  | \"ssb\"             |\n| mtd1   | 00002000 | 00020000  | \"uboot-env\"       |\n| mtd2   | 00002000 | 00020000  | \"dtb0\"            |\n| mtd3   | 0003c000 | 00020000  | \"kernel0\"         |\n| mtd4   | 00300000 | 00020000  | \"rootfs0\"         |\n| mtd5   | 004c0000 | 00020000  | \"dtb1\"            |\n| mtd6   | 00300000 | 00020000  | \"kernel1\"         |\n| mtd7   | 004c0000 | 00020000  | \"rootfs1\"         |\n| mtd8   | 00001000 | 00020000  | \"userdata\"        |\n| mtd9   | 00001000 | 00020000  | \"mfginfo1\"        |\n| mtd10  | 00001000 | 00020000  | \"mfginfo2\"        |\n| mtd11  | 00001000 | 00020000  | \"uboot-env2\"      |\n\nThis ONT supports dual boot. \n\n`kernel0` and `rootfs0` respectively contain the kernel and firmware of the first image, `kernel1` and `rootfs1` the kernel and firmware of the second one.\n\n# Useful files and binaries\n\n## scfg.txt\nIn the XGS-ONU-25-20NI ONT, the settings are loaded by four `scfg.txt` files.\nFor overwriting settings, `/userdata/scfg.txt` and `/tmp/scfg.txt` are used.\n\n- `/config/default_scfg.txt`  (read only): Contains the manufacturer's default settings, which are read first at ONT startup and are the lowest priority settings.\n- `/config/scfg.txt`  (read only): Contains settings set by the firmware creator, which have higher priority than `default_scfg.txt` and will overwrite the settings if there is a conflict.\n- `/userdata/scfg.txt` (read/write): Contains settings set by the user or ISP. It has a higher priority than `/config/scfg.txt` and will overwrite the settings if there is a conflict. Can be edited and saved.\n- `/tmp/scfg.txt` (temp): It contains dynamically generated settings based on values stored on its custom ROM (mtd9, mtd10). Because they are generated on tmpfs and cannot be saved directly, they are rewritten via the `#ONT> system/misc` command on the ONT.\n\nThe settings are overwritten and loaded at startup with the following priority:\n\n***(High)*** `/tmp/scfg.txt` > `/userdata/scfg.txt` > `/config/scfg.txt` > `/config/default_scfg.txt` ***(Low)***\n\n## Misc Command\nTo configure settings using the MISC command, execute the following command:\n```\n#ONT> system/misc\n#ONT/system/misc>\n```\n\n\n# Usage\n\n## Login and Enable\n\nThis stick does not have a web UI.\nTo configure it, you must log in via `UART` or `telnet`.\n\n{% include alert.html content=\"FS.com Stick XGS-ONU-25-20NI does not have its PON S/N on the label: the S/N field stamped on the label is FS.com's internal S/N, not the PON S/N. In order to obtain the actual PON S/N, either ask an FS.com sales representative or check the boot log from the UART!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n| User                     | Password (Enable Password)                                  |\n| ------------------------ | ----------------------------------------------------------- |\n| ONU GPON Serial Number   | 8 digit HMAC-MD5 based on Uppercase ONU GPON Serial Number  |\n\nUse the following form to generate login credentials:\n\n{% include cig_password_xgspon.html password_len=\"8\" %}\n\nOr follow this external documentation on how to [emulate the ONT in QEMU](https://github.com/YuukiJapanTech/CA8271x), use at your own risk.\n\nUART does not ask for a login, it is possible to get a root shell without knowing the password.\n\n## Root procedure\nAfter logging in via `telnet` or `UART`, you will first access the MiniShell with user privileges:\n```\nONT>\n```\n\nThe root MiniShell can be accessed by executing the `enable` command on this MiniShell:\n```\nONT> enable\n#ONT>\n```\n\nSwitching to the Linux root shell is possible by executing the following command:\n\n```\n#ONT> system/shell\n#ONT/system/Shell> sh\n#\n```\n\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\nCheck the ONU Registration State with the following command:\n\n```\n#ONT> traffic/pon/show onu\n\n------------------------- ONU INFO --------------------------\n\nOnu id 65535\nsdThreshold:   0\nsfThreshold:   0\nTO1:   80000\nTO2:   1\neqd:   0\nSerial Number(vendor code): GPON\nSerial Number(sn):          abcd1234\nPassword:                   30 31 32 33 34 353 36 37 38 39\nRegistration ID:           0x44454641554c540000000000000000000000000000000000000000000000000000000000\n------------------------- INFO END --------------------------\n\n#ONT> \n```\n\nCheck the ONU operation state with the following command:\n\n```\n#ONT>traffic/pon/show link\n\n ----------------- LINK STATE -----------------\n Operation State Machine: INIT (O1)\n ----------------- STATE  END -----------------\n\n#ONT>\n```\n\n## Getting OLT vendor information\nOLT information can be extracted from MIB 131 with the following command:\n\n```\n#ONT>system/mib/show 131\nTable Oltg, Olt-g, total 1 instances\n\nEntityID                  = 0x0000\nVendorId                  = \"\"\nEquipmentId               = \"\"\nVersion                   = 00 00 00 00 00 00 00 00 00 00 00 00 00 00\nTimeOfDay                 = 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n\n#ONT>\n```\n\n## Querying a particular OMCI ME\nYou can browse the MIB with the following command:\n```\n#ONT> system/mib\n#ONT/system/mib> \n```\n\n### Showing a list of supported MIBs\n\n```\n#ONT/system/mib> show\nThis command prints out the content of a MIB table.\nUsage: show CLASSID\nCLASSID:\n      the class ID of the ME, defined in 983.2/984.4, currently\nthe following MEs are supported:\nClassID  Name            Desc\n256      Ontg            Ont-g\netc...\n```\n\n### Showing a specific MIB\nFor example, to display MIB 256 (Ont-g):\n\n```\n#ONT/system/mib>show 256\nTable Ontg, Ont-g, total 1 instances\n\nEntityID                  = 0x0000\nVID                       = \"GPON\"\nVersion                   = 58 47 2d 39 39 53 00 00 00 00 00 00 00 00\nSerialNum                 = 47 50 4f 4e ab cd 12 34\nTraffMgtOpt               = 2\nAtmCCOpt                  = 0\nBatteryBack               = 1\nAdminState                = 0\nOpState                   = 0\nOnuSurvivalTime           = 0\nLoid                      = \"\"\nPassword                  = \"\"\nAuthState                 = 0\nOntState                  = 1\n\n#ONT/system/mib>\n```\n\n### Dumping a MIB\nOutput a dump of MIB to `/tmp/mibdump.txt`\n```\n#ONT/system/mib> dump\nMIB is saved to the file /tmp/mibdump.txt.\n#ONT/system/mib>\n```\n\n## Getting Speed LAN Mode\nLAN Speed Mode can be verified from the `Status` column displayed by the following command:\n\n```\n#ONT>traffic/eth/show pack\n\nbuild time Apr 26 2023: 06:23:15\n\n-------------------- Line Pack -- PWR 0X0      --\nLine Slot 10, NumOfPorts 1, type 49, subtype 75, state 2\n-------------------- Configuration -------------------\nport | enable | loop | Mode | RL Type | RL Us Rate| RL Ds Rate|\n1       Yes     No      Auto            0       0       0\n\n-------------------- Status -------------------\n1) link state: Up, link mode: 2.5G Full\n\n-------------------- Bridge Pack -------------------\nType:       75\nState:      2\nMAC Table:  0\nMAC Aging:  0\nMTU:        0\n-------------------- Chip Data -------------------\neth Fd:         7\nport Mask:      0x0018\ntype            28\n\n********** DEBUG INFO **********\n                 EmrLogId  : 5\n               EmrAdminEn  : 0\n              EmrbeInited  : 1\n              EmrDumpConn  : 0\n             EmrPwrShedEn  : 0x0\n           EmrConnItemNum  : 0\n         EmrUsDsReverseEn  : 1\n       EmrConnAllVidCheck  : 0\n      EmrMcastGemVlanOpEn  : 1\n       gEmrSaveConnItemEn  : 1\n      gEmrMcastCrossVlanEn : 1\n    EmrUniExtractPriMatch  : 1\n EMR_DRV_PACK_DUMP_ITEM_EN : 0\n********************************\n#ONT>\n```\n\n\n# GPON/OMCI settings\nXGS-ONU-25-20NI ONT uses the `scfg.txt` file and misc command for configuration.\n\n## Getting/Setting ONU GPON Serial Number\nThis setting must be changed with the `misc` CLI option and the `eqsn set \"<serialnumber>\"` command.\nFor example, if the desired S/N is `GPONabcd1234` (`47504f4eabcd1234`):\n```\n#ONT/system/misc> eqsn set \"GPONabcd1234\"\n```\n\nThe get command can also be used to retrieve the configured PON S/N.\n```\n#ONT/system/misc> eqsn get\neqsn: GPONabcd1234\n```\n\n## Getting/Setting ONU GPON PLOAM password\nThis setting must be changed with the `misc` CLI option and the `exeep_w8 \"<password>\"` command.\nFor example, if the desired PLOAM password is `0123456789`:\n```\n#ONT/system/misc> exeep_w8 \"0123456789\"\n```\n\nThe `exeep_r8` command can also be used to retrieve the configured PLOAM password.\n\n```\n#ONT/system/misc> exeep_r8\n[00, 000] 44 45 46 41 55 4c 54 00 - 00 00 00 00 00 00 00 00     |  DEFAULT......\n[10, 016] 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00     |  .............\n[20, 032] 00 00 00 00 ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[30, 048] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[40, 064] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[50, 080] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[60, 096] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[70, 112] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[80, 128] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[90, 144] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[a0, 160] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[b0, 176] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[c0, 192] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[d0, 208] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[e0, 224] ff ff ff ff ff ff ff ff - ff ff ff ff ff ff ff ff     |  .............\n[f0, 240] ff ff ff ff ff ff ff ff - ff ff ff ff 15 91 f3 9f     |  ............k\n```\n\n## Getting/Setting ONU GPON LOID\nThis setting must be changed in `scfg.txt`, using the key `CHAR-ARRAY CFG_ID_LOID`. \nTo modify the LOID username, add the following line to `/userdata/scfg.txt`:\n```\nCHAR-ARRAY CFG_ID_LOID = { 0xXX,0xXX,0xXX,0xXX, 0xXX,0xXX,0xXX,0xXX, 0xXX,0xXX,0xXX,0xXX, 0xXX,0xXX,0xXX,0xXX, 0xXX,0xXX,0xXX,0xXX, 0xXX,0xXX,0xXX,0xXX };\n```\n\nFor example, if the desired LOID is `0123456`:\n```\nCHAR-ARRAY CFG_ID_LOID = { 0x30,0x31,0x32,0x33, 0x34,0x35,0x36,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 };\n```\n\n## Getting/Setting ONU GPON LOID password\nThis setting must be changed with the `misc` CLI option and the `pon_passwd set <password>` command.\nFor example, if the desired LOID password is `0123456789`:\n```\n#ONT/system/misc> pon_passwd set 0123456789\n```\n\nThe `get` option can also be used to retrieve the configured LOID password:\n```\n#ONT/system/misc> pon_passwd get\neqsn: 01234567890000000000\n```\n\n## Getting/Setting OMCI hardware version (ME 256)\nThis setting must be changed with the `misc` CLI option and the `eqvid set \"<hwver>\"` command.\nFor example, if the desired hardware version is `abc123`:\n```\n#ONT/system/misc> eqvid set \"abc123\"\n```\n\nThe `get` option can also be used to retrieve the configured hardware version.\n```\n#ONT/system/misc> eqvid get\neqvid: abc123\n```\n\n## Getting/Setting OMCI vendor ID (ME 256)\nThis setting must be changed with the `misc` CLI option and the `vendor set \"<vendor>\"` command.\nFor example, if the desired vendor is `GPON`:\n```\n#ONT/system/misc> vendor set \"GPON\"\n```\n\nThe `get` option can also be used to retrieve the configured PON S/N vendor field:\n```\n#ONT/system/misc> vendor get\nvendor: GPON\n```\n\nIn this ONT, the MIB OntG Vendor can be set to a value different from the S/N vendor value:\n```\n#ONT/system/misc> eqsn get\neqsn: GPONabcd1234\n#ONT/system/misc> vendor get\nvendor: ZTEG\n```\n\n\n# Advanced settings\nSee the link below for other MiniShell commands.\n- [MiniShell command tree](/xgs/ont-fs-XGS-ONU-25-20NI-cli)\n\n## Transferring files to the stick\nStick's busybox (Linux shell) supports netcat and TFTP, which allow to send and receive files:\n```\n# tar cf - localfile | nc remotehost-ip 10000\n```\n\n```\n# tftp -r remotefile.bin -g remotehost-ip\n```\n\n## Backing up all partitions\nTo obtain a backup, use the `dd` command to save it on `/tmp`: \n```\n# dd if=/dev/mtdX of=/tmp/mtdX.bin\n# tftp -l /tmp/mtdX.bin -r remotehost-ip\n```\n\nOr use the `cat` command to transfer it via netcat:\n\n```\n# cat /dev/mtdX | nc remotehost-ip 10000\n```\n\nWhen partition writing to the stick, use the flash command set.\n(Do not write with the `dd` command because ECC is enabled).\n```\n# flash_eraseall /dev/mtdX\n# flashcp -v targetfile /dev/mtdX\n```\n\n## Setting management IP\nTo change the management IP, set it with the `misc` CLI option and the `admin_ip set <ip>` command.\nFor example, if the desired management IP is `192.168.1.1`:\n```\n#ONT/system/misc> admin_ip set 192.168.1.1\n```\n\nTo change the management IP netmask, set it with the `misc` CLI option and the `admin_mask set <netmask>` command.\nFor example, if the desired management IP mask is `255.255.255.0`:\n```\n#ONT/system/misc> admin_mask set 255.255.255.0\n```\n\n\n# Random notes\n\n## Bricked stick Repair\n{% include alert.html content=\"This is an external file ([mtd dump](https://github.com/YuukiJapanTech/CA8271x)), so use it at your own risk!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\nIf the stick is bricked, it can be repaired by accessing uboot from the UART.\n\nIf stick fails to boot, uboot will enable text input.\n```\nERROR: can't get kernel image!\nSATURN#\n```\n\nDownload the stick's mtd dump from [GitHub.](https://github.com/YuukiJapanTech/CA8271x/tree/main/mtd)\n\nEnable NAND with the following command:\n```\nSATURN# spi_nand probe 0\nSPI_NAND ID: 0x12c200\nSPI-NAND: MX35LF1GE4AB is found.\nMX35LF1GE4AB\nspinand_oob_size:0x40\nspinand_page_size:0x800\nspinand_blk_size:0x20000\nspinand_size:0x8000000\nSATURN#\n```\n\nReceive the file with the `loadb` command.\n```\nSATURN# loadb 0x80000000\n## Ready for binary (kermit) download to 0x80000000 at 115200 bps...\n```\n\nUsing Tera Term, send the Kernel image (mtd3 or mtd6) by kermit transfer.\n{% include image.html file=\"XGS-ONU-25-20NI/Stick_Rep.png\" alt=\"XGS-ONU-25-20NI Repair\" caption=\"XGS-ONU-25-20NI Repair\" %}\n\nErase the NAND and write the transferred kernel.\n```\nSATURN# spi_nand erase 0x000000600000 0x600000\nSATURN# spi_nand erase 0x000003500000 0x600000\nSATURN# spi_nand write 0x80000000 0x000000600000 0x600000\nSATURN# spi_nand write 0x80000000 0x000003500000 0x600000\n```\n\nReceive the file with the `loadb` command.\nUsing Tera Term, send the rootfs image (mtd4 or mtd7) by kermit transfer.\n```\nSATURN# loadb 0x81000000\n## Ready for binary (kermit) download to 0x81000000 at 115200 bps...\n```\n\nErase the NAND and write the transferred rootfs.\n```\nSATURN# spi_nand erase 0x000000c00000 0x2800000\nSATURN# spi_nand erase 0x000003b00000 0x2800000\nSATURN# spi_nand write 0x81000000 0x000000c00000 0x2800000\nSATURN# spi_nand write 0x81000000 0x000003b00000 0x2800000\n```\n\nWhen the stick turns back on, it will boot with the transferred kernel and rootfs.\n\n\n# Known Bugs\n- There is a bug in the `register_id` command in the `misc` CLI option that changes the value of `pon_passwd` (LOID Password) instead of `register_id` (PLOAM).\n\n\n# Miscellaneous Links\n- [GitHub - CA8271x](https://github.com/YuukiJapanTech/CA8271x)\n\n"
  },
  {
    "path": "_ont_xgs/ont-fs-com.md",
    "content": "---\ntitle: FS.com\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont_xgs/ont-hisense-ltf7267-bha+.md",
    "content": "---\ntitle: HiSense LTF7267-BHA+\nhas_children: false\nlayout: default\nparent: HiSense\n---\n\n# Hardware Specifications\n\n|                  |                                                          |\n| ---------------- | -------------------------------------------------------- |\n| Vendor/Brand     | HiSense                                                  |\n| Model            | LTF7267-BHA+                                             |\n| ODM              | ✅                                                       |\n| Chipset          | Cortina CA8271A                                          |\n| Flash            | 128MB                                                    |\n| RAM              | 128MB                                                    |\n| System           | Custom Linux by Cortina (Saturn SDK) based on Kernel 4.4 |\n| XGMII/XSGMII     | Yes                                                      |\n| Optics           | SC/APC                                                   |\n| IP address       | 192.168.0.1                                              |\n| Web Gui          | ✅ user `admin`, password `system`                       |\n| SSH              | ✅ user `root`, password `hbmtsfp`                       |\n| Telnet           | ✅ user `root`, password `hbmtsfp`                       |\n| Serial           | ✅                                                       |\n| Serial baud      | 115200                                                   |\n| Serial encoding  | 8-N-1                                                    |\n| Form Factor      | miniONT SFP+                                             |\n\n# External/Internal Photo\n\n{% include image.html file=\"ont-hisense-ltf7267-bha+_front.jpg\" alt=\"HiSense LTF7267-BHA+ External\" caption=\"HiSense LTF7267-BHA+ External\" %}\n\n## Serial\n\nThe stick has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface. It's near the SFP header. TX, RX and ground pads need to be connected to a USB2TTL adapter supporting 3V3 logic.\n\n{% include image.html file=\"ont-hisense-ltf7267-bha+_inside.jpg\" alt=\"HiSense LTF7267-BHA+ Internals\" caption=\"HiSense LTF7267-BHA+ Internals\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of software versions\n- 22.05.26.1 - 20220527052622 (from /etc/hi_version - /etc/version)\n\n\n## List of partitions\n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00001000  | \"ssb\"           |\n| mtd1  | 00002000 | 00001000  | \"uboot-env\"     |\n| mtd2  | 00002000 | 00001000  | \"dtb0\"          |\n| mtd3  | 0003c000 | 00001000  | \"kernel0\"       |\n| mtd4  | 00300000 | 00001000  | \"rootfs0\"       |\n| mtd5  | 004c0000 | 00001000  | \"dtb1\"          |\n| mtd6  | 00300000 | 00001000  | \"kernel1\"       |\n| mtd7  | 004c0000 | 00001000  | \"rootfs1\"       |\n| mtd8  | 00001000 | 00001000  | \"userdata\"      |\n| mtd9  | 00001000 | 00001000  | \"squashfs_ubi\"  |\n| mtd10 | 00001000 | 00001000  | \"userdata\"      |\n\nThis ONT supports dual boot. \n\n`kernel0` and `rootfs0` respectively contain the kernel and firmware of the first image, `kernel1` and `rootfs1` the kernel and firmware of the second one.\n\n# XGS-PON ONU status\n\nTo access Cortina Shell, needed to check OMCI settings and XGSPON status, use the following command:\n\n```sh\n# app-cli\n```\nThis console can also be reached by opening a telnet connection to `192.168.0.1:2233`\n\n\n## Checking Activation Status (from app-cli and telnet\\ssh session)\n\nOpen two telnet sessions, one to `192.168.0.1` and one to `192.168.0.1:2233`\n\nBefore running any commands on the second connection, on the first one tail the `/var/log/messages` file (needed to see the output of the next steps)\n\n```sh\nCortina> enable\nCortina# config\nCortina(config)# aal\nCortina(config-aal)# xgpon\nCortina(config-aal-xgpon)# show activation_state 0\n```\n\nYou will see the following output on the first shell:\n\n```sh\n[260426.782381] XGPON Activation Finite State Machine Information^M\n[260426.788170] ----------------------------------------------------------------^M\n[260426.795428] PON mode                 : 5(XGSPON)^M\n[260426.800157] VendorID                 : 0x534d4253(SMBS)^M\n[260426.805556] VSSN                     : 0x11223344^M\n[260426.810423] TO1                      : 80000(unit:125us)^M\n[260426.815879] TO2                      : 1000(unit:125us)^M\n[260426.821543] S/W FSM current event    : EQD_ASSIGNMENT^M\n[260426.826617] S/W FSM current state    : O5.1^M\n[260426.831002] S/W FSM previous state   : O4^M\n[260426.835131] S/W FSM running state    : O5.1^M\n[260426.839476] H/W FSM current state    : O5.1^M\n[260426.843830] H/W FSM previous state   : O4^M\n[260426.847990] Activated counter        : 1^M\n[260426.852085] ONU assigned ID          : 1 ^M\n[260426.856244] PON-ID                   : 0x30313130 ^M\n[260426.861210] Online time              : 260395200 miliseconds ( 26039520 system ticks)^M\n[260426.869187] Registration ID: 0x000000000000000000000000000000000000000000000000000000000000000000000000^M\n[260436.544953] ^M\n```\n\n## Showing ONT configuration (from app-cli session)\n\n```sh\nCortina> enable\nCortina# config\nCortina(config)# omci\nCortina(config-omci)# show info\n```\n\nYou will see the following output:\n\n```sh\n=======================================\nomcc       :0xa3\nipv4Addr   :0x7f000001\nipv4Mask   :0xffffff00\nipv4Gw     :0xffffff00\nponNum     :1\ngeNum      :0\nxgeNum     :1\niphostNum  :1\npotsNum    :0\nveipNum    :0\nponSlot    :1\ngeSlot     :2\nxgeSlot    :3\niphostSlot :0\npotsSlot   :0\nveipSlot   :4\noltType    :ZTE\nponMacMode :5\nmaxQ/Tc    :8\nispType    :COMMON\nbatteryBak :1\nremoteDbg  :0\npowerCsvMd :0\nipv6Flag   :0\nveipIdp    :0\nloid       :00\npasswd     :\nvendorId   :SMBSSMBS\nsn         :SMBS\nversion    :F5684S_v1\neqId       :FIBER Box\nmac        :0:13:25:0:0:1\niphostMac  :0:13:25:0:0:1\npsk        :0x0000000000000000\n=======================================\nXGe Port idx 0 map to Port 6\n```\nPlease note that some of the above fields are decoded incorrectly, such as `sn` and `versionId`\n\n## Getting OLT vendor information (from app-cli session)\n\n```sh\nCortina> enable\nCortina# config\nCortina(config)# omci\nCortina(config-omci)# show me olt_g\n```\n\nYou will see the following output:\n\n```sh\nme oltG has [1] instance\n===========================================\nMe: oltG\n    Instance: 0x0\n        oltVendorId[0]: 0x48\n        oltVendorId[1]: 0x57\n        oltVendorId[2]: 0x54\n        oltVendorId[3]: 0x43\n        eqId[0]: 0x20\n        eqId[1]: 0x20\n        eqId[2]: 0x20\n        eqId[3]: 0x20\n        eqId[4]: 0x20\n        eqId[5]: 0x20\n        eqId[6]: 0x20\n        eqId[7]: 0x20\n        eqId[8]: 0x20\n        eqId[9]: 0x20\n        eqId[10]: 0x20\n        eqId[11]: 0x20\n        eqId[12]: 0x20\n        eqId[13]: 0x20\n        eqId[14]: 0x20\n        eqId[15]: 0x20\n        eqId[16]: 0x20\n        eqId[17]: 0x20\n        eqId[18]: 0x20\n        eqId[19]: 0x20\n        version[0]: 0x31\n        version[1]: 0x30\n        version[2]: 0x0\n        version[3]: 0x0\n        version[4]: 0x0\n        version[5]: 0x0\n        version[6]: 0x0\n        version[7]: 0x0\n        version[8]: 0x0\n        version[9]: 0x0\n        version[10]: 0x0\n        version[11]: 0x0\n        version[12]: 0x0\n        version[13]: 0x0\n        timeOfDay[0]: 0x0\n        timeOfDay[1]: 0x0\n        timeOfDay[2]: 0x0\n        timeOfDay[3]: 0x0\n        timeOfDay[4]: 0x0\n        timeOfDay[5]: 0x0\n        timeOfDay[6]: 0x0\n        timeOfDay[7]: 0x0\n        timeOfDay[8]: 0x0\n        timeOfDay[9]: 0x0\n        timeOfDay[10]: 0x0\n        timeOfDay[11]: 0x0\n        timeOfDay[12]: 0x0\n        timeOfDay[13]: 0x0\n    No linked ME\n```\n\n## Checking current connection type and configuration (GEM Port+Mac Brige)\n\n```sh\nCortina> enable\nCortina# config\nCortina(config)# omci\nCortina(config-omci)# show connection\n```\n\nYou will see the following output:\n\n```sh\nGEM:65534  | (DS, TCONT:NULL)\n           --mutilcast no care\n             |--Eth   :0x0301\nGEM: 1024  | (BI, TCONT:0x100, allocId:1025)\n           --Bridge + 802.1p:0x1\n           --Map Pri 0xe8\n           --Ani Map Vlan Total Num 1 Vid 100\n             |--Eth   :0x0301\nGEM: 1025  | (BI, TCONT:0x101, allocId:1281)\n           --Bridge + 802.1p:0x1\n           --Map Pri 0x17\n           --Ani Map Vlan Total Num 1 Vid 100\n             |--Eth   :0x0301\n```\n\n## Checking VLAN filter \n\n```sh\nCortina> enable\nCortina# config\nCortina(config)# omci\nCortina(config-omci)# show stream\n```\n\nYou will see the following output:\n\n```sh\nLink to PPTP eth: ------->instance 0x301\n    input TPID 0x8100 output TPID 0x8100\n    dsMode:Inverse us rules\n    -------------------------------------------------------------------\n    |               Filter              |          Treatment          |\n    |-----------------------------------|-----------------------------|\n    |    Outer   |         Inner        | R |   Outer    |    Inner   |\n    |------------|----------------------| E |------------|------------|\n    | PRI | VID  | PRI | VID  | Filter  | M | PRI | VID  | PRI | VID  |\n    |-----|------|-----|------|---------|---|-----|------|-----|------|\n    |  15 | 4096 |  14 | 4096 |No filter| 3 |  15 |    0 |  15 |    0 |\n    |  14 | 4096 |  14 | 4096 |No filter| 3 |  15 |    0 |  15 |    0 |\n    |  15 | 4096 |  15 | 4096 |No filter| 0 |  15 | 4096 |   0 |    1 |\n    |  15 | 4096 |   8 |  835 |No filter| 1 |  15 |    0 |   8 |  100 |\n    |-----|------|-----|------|---------|---|-----|------|-----|------|\n```\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend the lines provided below to the file and save it to change the PON S/N:\n\n```\nSTRING CFG_ID_PON_VENDOR_ID = SMBS;\nINT CFG_ID_PON_VSSN = 0xAABBCCDD;\n```\n\nReboot ONT to apply the change\n\n## Setting ONU GPON PLOAM password\n\n### Web procedure\n\n<form id=\"hisense-ploam\" novalidate>\n    <div class=\"form-floating mb-3\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"PLOAM in ASCII\" name=\"ploam\" id=\"ploam\" required>\n        <label for=\"ploam\">PLOAM in ASCII</label>\n        <div class=\"invalid-feedback\">\n            Please provide a valid PLOAM password.\n        </div>\n    </div>\n    <div class=\"mb-3\">\n        <input type=\"submit\" class=\"btn btn-primary\" value=\"Encode!\">\n    </div>\n    <div class=\"language-plaintext highlighter-rouge\">\n        <div class=\"highlight\">\n            <pre class=\"highlight\" id=\"ploam-encoded\">\n            </pre>\n        </div>\n    </div>\n</form>\n\n<script type=\"text/javascript\" src=\"/assets/js/generated/LTF7267-BHA-ploam.js\"></script>\n<script type=\"text/javascript\">\n    var hisensePloamForm = document.getElementById('hisense-ploam');\n    var hisenseResult = document.getElementById('ploam-encoded');\n    hisensePloamForm.addEventListener('submit', (event) => {\n        event.preventDefault();\n        if (!hisensePloamForm.checkValidity()) {\n            event.preventDefault();\n        } else {\n            const data = new URLSearchParams(new FormData(hisensePloamForm));\n            hisenseResult.innerHTML = hisensePloam(data.get('ploam'));\n        }\n    });\n</script>\n\n\n### Normal procedure\n\nThis ONT seems to support PLOAM passwords up to 288 bits in lenghth (36 ASCII characters, 72 Hex digits).\n\nThe PLOAM password is stored into 32 bit chunks (4 ASCII characters / 8 Hex digits), with each chunk being byte-swapped. \n\nSo, starting from the following PLOAM in ASCII format\n\n```\nA1B2C3D4E5\n```\n\nIt gets translated into the following HEX value:\n\n```\n0x41314232433344344535\n```\n\nWhich is then split into the following blocks (the last block gets padded with 0 to reach 8 digits):\n\n```\nBLOCK 0: 0x41314232\nBLOCK 1: 0x43334434\nBLOCK 2: 0x45350000\n```\n\nEach block is then byte-swapped (i.e. read each sequence of two digits from right to left):\n\n```\nBLOCK 0: 0x32423141\nBLOCK 1: 0x34443343\nBLOCK 2: 0x00003545\n```\n\nAnd then you can finally make the change persistent by modifying the configuration file:\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend the lines provided below to the file and save it to change the PLOAM password:\n\n```\nINT             CFG_ID_PON_REGISTRATION_ID0                                         = 0x32423141;\nINT             CFG_ID_PON_REGISTRATION_ID1                                         = 0x34443343;\nINT             CFG_ID_PON_REGISTRATION_ID2                                         = 0x00003545;\n```\n\nReboot the ONT to apply the change.\n\n\n## Setting ONU GPON LOID and LOID password\n\n{% include alert.html content=\"The value 0x0 is null, take note of your LoID and password from the original ONT\" color=\"red\" %}\n\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend lines below to the file and save it to change LoID and LoID password\n\n```\nCHAR-ARRAY      CFG_ID_LOID                                                         = {0x30,0x30,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};\nCHAR-ARRAY      CFG_ID_PASSWD                                                       = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};\n```\n\nReboot ONT to apply the change.\n\n## Setting OMCI software version (ME 7)\n\n```sh\n# fw_setenv img_version0 20220527052622\n# fw_setenv img_version1 20220527052622\n```\n\nReboot ONT to apply the change.\n\n## Setting OMCI hardware version (ME 256)\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend the line provided below to the file and save it to change HWVER:\n\n```\nCHAR-ARRAY      CFG_ID_GPON_VERSION = {0x46,0x35,0x36,0x38, 0x34,0x53,0x5f,0x76, 0x31,0x00,0x00,0x00, 0x00,0x00}; ##GPON version string, default value is V1.0\n```\n\nReboot ONT to apply the change.\n\n## Setting OMCI equipment ID (ME 257)\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend the line providede below to the file and save it to change the EQID:\n\n```\nCHAR-ARRAY      CFG_ID_GPON_EQID = {0x46,0x49,0x42,0x45, 0x52,0x20,0x42,0x6f, 0x78,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00}; ##GPON ME ONU2G equiment id value, default is saturn\n```\n\nReboot ONT to apply the change.\n\n# Advanced settings\n\n## Changing OLT Emulation Type\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend the lines provided below to the file and save it to change Emulation Type:\n\n```\nSTRING          CFG_ID_PON_OLT_TYPE                             = ALCL; ##GPON OLT Vendor name, support ZTE,ADTRAN,ALCL,CALIX,SUMITOMO,CORTINA,HUAWEI\n```\n\nReboot ONT to apply the change.\n\n## Changing OMCC Version\n\n\n```sh\n# vi /config/scfg.txt\n```\n\nAppend the line provided below to the file and save it to change OMCC Version:\n\n```\nCHAR            CFG_ID_OMCC_VERSION                             = 0xB2;\n```\n\nReboot ONT to apply the change.\n\n\n# Known Bugs\n- `ALCL` OLT mode uses some static configurations on MIBs, so if your OLT has strict configuration checks it might not work properly.\n- During initial tests the only currently working mode of the stick is `PPTP EthUni`.\n- Stick can be configured to also emulate `VEIP` mode (adding it to the scfg.txt file), but the current firmware doesn't link correctly the XGBE interface, so no traffic is passing between LAN and PON interfaces.\n"
  },
  {
    "path": "_ont_xgs/ont-hisense.md",
    "content": "---\ntitle: HiSense\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont_xgs/ont-huawei-hn8010ts.md",
    "content": "---\ntitle: Huawei HN8010Ts\nhas_children: false\nlayout: default\nparent: Huawei\n---\n\n# Hardware Specifications\n\n| ------------ | --------------------------------------------------------------- |\n| Vendor/Brand | Huawei                                                          |\n| Model        | HN8010Ts                                                        |\n| ODM          |                                                                 |\n| Chipset      | HiSilicon SD5117                                                |\n| Flash        | 128MB                                                           |\n| RAM          | 32MB                                                            |\n| System       | Dopra Linux                                                     |\n| 10GBaseT     | Yes                                                             |\n| Optics       | SC/APC                                                          |\n| IP address   | 192.168.100.1                                                   |\n| Web Gui      | ✅ user: `telecomadmin`, password: `admintelecom`               |\n| SSH          |                                                                 |\n| Telnet       | After Enabling (via XML file) user: `root`, password: `adminHW` |\n| Serial       |                                                                 |\n| Form Factor  | ONT                                                             |\n\n{% include image.html file=\"huawei-hn8010ts-20/top_board_view2.jpg\" alt=\"Huawei HN8010Ts teardown top\" caption=\"Huawei HN8010Ts teardown top\" %}\n{% include image.html file=\"huawei-hn8010ts-20/bottom_board_view.jpg\" alt=\"Huawei HN8010Ts teardown bottom\" caption=\"Huawei HN8010Ts teardown bottom\" %}\n{% include image.html file=\"huawei-hn8010ts-20/broadcom_bcm84891.jpg\" alt=\"Huawei HN8010Ts Broadcom chipset\" caption=\"Huawei HN8010Ts Broadcom chipset\" %}\n{% include image.html file=\"huawei-hn8010ts-20/chip_sd5.82s_rfiv100__9657_cn_05.jpg\" alt=\"Huawei HN8010Ts HiSilicon PON chipset\" caption=\"Huawei HN8010Ts HiSilicon PON chipset\" %}\n{% include image.html file=\"huawei-hn8010ts-20/nand_ds35q1ga.jpg\" alt=\"Huawei HN8010Ts NAND\" caption=\"Huawei HN8010Ts NAND\" %}\n\n## Software Version\n\n- V5R02C0C10S165\n\n## List of partitions\n\n0x000000000000-0x000000100000 : \"bootcode\" (1MiB)  \n0x000000100000-0x000008000000 : \"ubilayer_v5\" (127MiB)  \n\n\n{% include_relative ont-huawei-useful-command.md %}\n"
  },
  {
    "path": "_ont_xgs/ont-huawei-useful-command.md",
    "content": "## Enabling telnet\n\nWe need access to a specific shell and in order to get it enabling telnet is required. On the ONT, the telnet server accepts connections but doesn't read any input, nor does it send anything.\n\nTo enable telnet the configuration backup/restore web UI page will be used. The configuration can be downloaded as an XML, which contains a lot more options than the web interface and a couple of them can be modified to enable telnet access: under the `X_HW_CLITelnetAccess` node, set the `Access` attribute to `1` and, in `AclServices`, `TELNETLanEnable` should also be set to `1`. Both might have to be set but your mileage may vary.\n\nIt is possible that this won't work/has been fixed in more recent versions.\n\nNow that this is done, the modified configuration file can be uploaded via the web interface, the ONT will restart and telnet should be accessible on port 23.\n\n{% include alert.html content=\"All results need to be converted from HEX to ASCII. You can use our [Converter](/ascii-hex), taking care to add 0x in front and remove the spaces every 8 hex digits.\" alert=\"Warning\" icon=\"svg-info\" color=\"blue\" %}\n\n# GPON ONU status\n\n## Get information of the OLT vendor\n\n```\nWAP>omcicmd mib show meid 131 instid 0\n\n  -------------------------------------------------------\n  Me(OLT-G), instance(0x0), instance size is 54\n  -------------------------------------------------------\n  Att1, AttSize = 0x4, AttContent: 48575443\n  Att2, AttSize = 0x14, AttContent: 00000000 00000000 00000000 00000000 00000000\n  Att3, AttSize = 0xe, AttContent: 31300000 00000000 00000000 0000\n  Att4, AttSize = 0xe, AttContent: 00000000 00000000 00000000 0000\n  -------------------------------------------------------\n\nsuccess!\n```\n*0x48575443* → *HWTC* (Huawei)\n\n# GPON/OMCI settings\n\n## Getting OMCI software version (ME 7)\n\n```\nWAP>omcicmd mib show meid 7 instid 0\n\n  -------------------------------------------------------\n  Me(Software Image), instance(0x0), instance size is 19\n  -------------------------------------------------------\n  Att1, AttSize = 0xe, AttContent: 56355230 32304331 30533131 3500\n  Att2, AttSize = 0x1, AttContent: 00\n  Att3, AttSize = 0x1, AttContent: 00\n  Att4, AttSize = 0x1, AttContent: 01\n  -------------------------------------------------------\n\nsuccess!\nWAP>omcicmd mib show meid 7 instid 1\n\n  -------------------------------------------------------\n  Me(Software Image), instance(0x1), instance size is 19\n  -------------------------------------------------------\n  Att1, AttSize = 0xe, AttContent: 56355230 32304331 30533131 3500\n  Att2, AttSize = 0x1, AttContent: 01\n  Att3, AttSize = 0x1, AttContent: 01\n  Att4, AttSize = 0x1, AttContent: 01\n  -------------------------------------------------------\n\nsuccess!\n```\n*0x56355230 32304331 30533131 3500* → *V5R020C10S115*\n\n## Getting OMCI hardware version and vendor ID (ME 256)\n\n```\nWAP>omcicmd mib show meid 256 instid 0\n\n  -------------------------------------------------------\n  Me(ONT-G), instance(0x0), instance size is 73\n  -------------------------------------------------------\n  Att1, AttSize = 0x4, AttContent: 48575443\n  Att2, AttSize = 0xe, AttContent: 32343046 2e410000 00000000 0000\n  Att3, AttSize = 0x8, AttContent: 2a2a2a2a 2a2a2a2a\n  Att4, AttSize = 0x1, AttContent: 00\n  Att5, AttSize = 0x1, AttContent: 00\n  Att6, AttSize = 0x1, AttContent: 00\n  Att7, AttSize = 0x1, AttContent: 00\n  Att8, AttSize = 0x1, AttContent: 00\n  Att9, AttSize = 0x1, AttContent: 00\n  Att10, AttSize = 0x18, AttContent: 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a 2a2a2a2a\n  Att11, AttSize = 0xc, AttContent: 2a2a2a2a 2a2a2a2a 2a2a2a2a\n  Att12, AttSize = 0x1, AttContent: 00\n  Att13, AttSize = 0x2, AttContent: 0001\n  -------------------------------------------------------\n\nsuccess!\n```\n\n*0x48575443* → *HWTC*\n*0x32343046 2e41* → *240F.A*\n\n## Getting OMCI equipment ID (ME 257)\n\n```\nWAP>omcicmd mib show meid 257 instid 0\n\n  -------------------------------------------------------\n  Me(ONT2-G), instance(0x0), instance size is 44\n  -------------------------------------------------------\n  Att1, AttSize = 0x14, AttContent: 48473830 31304876 36000000 00000000 00000000\n  Att2, AttSize = 0x1, AttContent: b0\n  Att3, AttSize = 0x2, AttContent: 0240\n  Att4, AttSize = 0x1, AttContent: 01\n  Att5, AttSize = 0x1, AttContent: 01\n  Att6, AttSize = 0x2, AttContent: 0040\n  Att7, AttSize = 0x1, AttContent: 02\n  Att8, AttSize = 0x1, AttContent: 01\n  Att9, AttSize = 0x2, AttContent: 0020\n  Att10, AttSize = 0x4, AttContent: 00000000\n  Att11, AttSize = 0x2, AttContent: 007d\n  Att12, AttSize = 0x1, AttContent: 00\n  Att13, AttSize = 0x2, AttContent: 0018\n  Att14, AttSize = 0x2, AttContent: 0001\n  -------------------------------------------------------\n\nsuccess!\n```\n\n*0x48473830 31304876 36* → *HG8010Hv6*\n\n"
  },
  {
    "path": "_ont_xgs/ont-huawei.md",
    "content": "---\ntitle: Huawei\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont_xgs/ont-nokia-use.md",
    "content": "# Usage\n## Login and enable\n\n\nOnce you're logged in, a custom menu will be shown and you'll be able to access the linux shell by first typing `system` followed by `shell`:\n\n```sh\nONT>enable\n#ONT>login\nUser name:ONTUSER\nPassword: ****\n```\n\nThe enable password can be generated using the following form:\n\n{% include cig_password.html username=\"ONTUSER\" %}\n\n# Access Full Shell\n\nTo access a complete linux shell just type:\n```sh\n#ONT>system\n#ONT/system>shell\n```\n\nTo exit the shell and reach the parent menu type `exit` or `x`, in each menu the `help` command will show how to use the shell\n"
  },
  {
    "path": "_ont_xgs/ont-nokia-useful-command.md",
    "content": "# GPON ONU status\n\n## Getting the operational status of the ONU\n```sh\n#ONT>traffic\n#ONT/system>pon\n#ONT/system/pon>show link\n\n ----------------- LINK STATE -----------------\n Link State:              ACTIVE\n Operation State Machine: OPERATION (O5)\n ----------------- STATE  END -----------------\n```\n\n## Querying a particular OMCI ME\n\n```sh\n#ONT>system\n#ONT/system>mib\n#ONT/system/mib>show 256\nTable Ontg, Ont-g, total 1 instances\n\nEntityID                  = 0x0000\nVID                       = \"ALCL\"\nVersion                   = AA BB CC DD EE FF 11 22 33 44 55 66 00 00\nSerialNum                 = AA BB CC DD EE FF 11 22\nTraffMgtOpt               = 0\nAtmCCOpt                  = 0\nBatteryBack               = 1\nAdminState                = 0\nOpState                   = 0\nOnuSurvivalTime           = 0\nLoid                      = \"\"\nPassword                  = \"\"\nAuthState                 = 0\nOntState                  = 1\n```\n\n# GPON/OMCI settings\n\n## Committing changes to the OMCI MIB tables for GPON operation\n```sh\n#ONT>system\n#ONT/system>mib\n#ONT/system/mib>reset\n```\n\n## Getting/Setting ONU GPON Serial Number\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>eqsn set \"ALCL00000001\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>eqsn get\neqsn: ALCL00000001\n---ATECMDRESULT--- OK\n```\n\n## Getting/Setting PLOAM\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>pon_passwd set \"123456789\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>pon_passwd get\npon_passwd: 31323334353637383900\n---ATECMDRESULT--- OK\n#ONT/system/misc>register_id set \"123456789\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>register_id get\npon_passwd: 31323334353637383900\n---ATECMDRESULT--- OK\n```\n\n## Setting OMCI software version (ME 7)\n```sh\n# echo SWVER=3FE49337AOCK80 > /mnt/rwdir/sys.cfg\n```\n\n## Getting/Setting OMCI hardware version (ME 256)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>eqvid get\neqvid: 3FE45458ABAA06\nhex_eqvid: 0x3346453435343538414241413036\n---ATECMDRESULT--- OK\n#ONT/system/misc>eqvid set \"YOUR_CUSTOM_VID\"\n```\n\n## Getting/Setting OMCI vendor ID (ME 256)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>vendor get\nvendor: ALCL\n---ATECMDRESULT--- OK\n#ONT/system/misc>vendor set \"ALCL\"\n---ATECMDRESULT--- OK\n```\n\n## Getting/Setting OMCI equipment ID (ME 257)\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>eqid set \"YOUR_CUSTOM_EQUID\"\n---ATECMDRESULT--- OK\n#ONT/system/misc>eqid get\neqid: YOUR_CUSTOM_EQUID\nhex_eqid: 0x594F55525F435553544F4D5F4551554944000000000000\n---ATECMDRESULT--- OK\n```\n\n# Advanced settings\n\n## Setting management IP\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>admin_ip get\nadmin_ip: 192.168.100.1\n---ATECMDRESULT--- OK\n#ONT/system/misc>admin_ip set 192.168.1.1\n#ONT/system/misc>admin_mask get\nadmin_mask: 255.255.255.0\n---ATECMDRESULT--- OK\n#ONT/system/misc>admin_mask set 255.255.255.0\n```\n"
  },
  {
    "path": "_ont_xgs/ont-nokia-xs-010s-q.md",
    "content": "---\ntitle: Nokia XS-010S-Q\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                                                    |\n| ---------------- | ------------------------------------------------------------------ |\n| Vendor           | Nokia                                                              |\n| Model            | XS-010S-Q                                                          |\n| ODM              | ?                                                                  |\n| ODM Product Code | ?                                                                  |\n| Chipset          | Cortina CA8271S                                                    |\n| CPU              | Dual core CPU (four virtual CPUs) running at 800 MHz               |\n| L1 Cache         | 64KB (32KB instruction, 32KB data)                                 |\n| L2 Cache         | 256KB with I/O coherency                                           |\n| Manufacter       | ?                                                                  |\n| Flash            | 1GB                                                                |\n| RAM              | ?                                                                  |\n| System           | ?                                                                  |\n| 10GBaseT         | Yes                                                                |\n| Optics           | SC/APC                                                             |\n| IP address       | 192.168.100.1                                                      |\n| Web Gui          | ✅ Port 80 user: `admin`, password: `1234`                         |\n| SSH              | ✅ (see Enable SSH)                                                |\n| Telnet           | ✅ Port 23 user: `admin`, password: `1234` (see Telnet Full Shell) |\n| Form Factor      | SFP+                                                               |\n\n# Module Pinout\n\n|     |     |     |\n| --- | --- | --- |\n| PIN | Description\n| 1. VeeT | Module transmitter ground | |\n| 2. Tx Fault |Transmitter fault indication output | |\n| 3. TX_DISABLE |Transmitter shut-off input | |\n| 4. SDA | 2-wire serial interface data line (MOD-DEF2) 2: I/O | |\n| 5. SCL | 2-wire serial interface clock (MOD-DEF1) 2 input | |\n| 6. MOD_ABS | Module absent | connected to VeeT or VeeR in the module |\n| 7. DYING GASP1 | Dying gasp message indicator input | |\n| 8. LOS | Loss of signal output | |\n| 9. VeeR | Module receiver ground | |\n| 10. VeeR | Module receiver ground | |\n| 11. VeeR | Module receiver ground | |\n| 12. RXD | Receiver inverted data output | |\n| 13. RXD+ | Receiver non-inverted data output | |\n| 14. VeeR | Module receiver ground | |\n| 15. VCCR | Module receiver 3.3V supply | |\n| 16. VCCT | Module transmitter 3.3V supply | |\n| 17. VeeT | Module transmitter ground | |\n| 18. TXD+ | Transmitter non-inverted data input | |\n| 19. TXD | Transmitter inverted data input | |\n| 20. VeeT | Module transmitter ground | |\n"
  },
  {
    "path": "_ont_xgs/ont-nokia-xs-010x-q.md",
    "content": "---\ntitle: Nokia XS-010X-Q\nhas_children: false\nlayout: default\nparent: Nokia\n---\n\n# Hardware Specifications\n\n|                  |                                                                                  |\n| ---------------- | -------------------------------------------------------------------------------- |\n| Vendor           | Nokia                                                                            |\n| Model            | XS-010X-Q                                                                        |\n| ODM              | CIG                                                                              |\n| ODM Product Code | XG-99YF                                                                           |\n| Chipset          | Cortina CA8271A                                                                  |\n| Manufacter       | CIG                                                                              |\n| Flash            | 128MB                                                                            |\n| RAM              | 128MB                                                                            |\n| System           | Custom Linux by Cortina (Saturn SDK) based on Kernel 4.4                         |\n| 10GBaseT         | Yes                                                                              |\n| Optics           | SC/APC                                                                           |\n| IP address       | 192.168.100.1                                                                    |\n| Web Gui          | ✅ Port 80 user: `admin`, password: `1234`                                       |\n| SSH              | ✅ (see Enable SSH)                                                              |\n| Telnet           | ✅ Port 23 user: `admin`, password: `1234` (see Telnet Full Shell)               |\n| Serial           | ✅                                                                               |\n| Serial baud      | 115200                                                                           |\n| Serial encoding  | 8-N-1                                                                            |\n| Form Factor      | ONT                                                                              |\n\n\n# External/Internal Photo\n\n{% include image.html file=\"ont-nokia_xs-010x-q_front.jpg\" alt=\"Nokia XS-010X-Q Front\" caption=\"Nokia XS-010X-Q Front\" %}\n\n{% include image.html file=\"ont-nokia_xs-010x-q_rear.jpg\" alt=\"Nokia XS-010X-Q Rear\" caption=\"Nokia XS-010X-Q Rear\" %}\n\n{% include image.html file=\"ont-nokia_xs-010x-q_internal_1.jpg\" alt=\"Nokia XS-010X-Q Internal 1\" caption=\"Nokia XS-010X-Q Internal 1\" %}\n\n{% include image.html file=\"ont-nokia_xs-010x-q_internal_2.jpg\" alt=\"Nokia XS-010X-Q Internal 2\" caption=\"Nokia XS-010X-Q Internal 2\" %}\n\n## Serial\n\nThe ONT has a TTL 3.3v UART console (configured as 115200 8-N-1) that can be accessed from the top surface: it's on the top left of the board, when the Ethernet\\Power\\Optical ports are facing down. TX, RX and ground pads need to be connected to a USB2TTL adapter supporting 3V3 logic.\n\n{% include image.html file=\"ont-nokia_xs-010x-q_ttl.jpg\" alt=\"Nokia XS-010X-Q TTL Pads\" caption=\"Nokia XS-010X-Q TTL Pads\" %}\n\n{% include alert.html content=\"Some USB TTL adapters label TX and RX pins the other way around: try to swap them if the connection doesn't work.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n## List of software versions\n- 3FE49337AOCK80 - (R4.4.17.063 CIG 25/06/2021)\n- 3FE49337BOCK28\n\n## List of partitions\n\n| dev   | size     | erasesize | name            |\n| ----- | -------- | --------- | --------------- |\n| mtd0  | 00040000 | 00020000  | \"ssb\"           |\n| mtd1  | 00100000 | 00020000  | \"uboot-env\"     |\n| mtd2  | 00100000 | 00020000  | \"dtb0\"          |\n| mtd3  | 00600000 | 00020000  | \"kernel0\"       |\n| mtd4  | 02800000 | 00020000  | \"rootfs0\"       |\n| mtd5  | 00100000 | 00020000  | \"dtb1\"          |\n| mtd6  | 00600000 | 00020000  | \"kernel1\"       |\n| mtd7  | 02800000 | 00020000  | \"rootfs1\"       |\n| mtd8  | 01400000 | 00020000  | \"userdata\"      |\n| mtd9  | 00100000 | 00020000  | \"mfginfo1\"      |\n| mtd10 | 00100000 | 00020000  | \"mfginfo2\"      |\n| mtd11 | 00001000 | 00001000  | \"uboot-env2\"    |\n| mtd12 | 00b09000 | 0001f000  | \"squashfs_ubi\"  |\n| mtd13 | 01078000 | 0001f000  | \"userdata\"      |\n| mtd14 | 00b09000 | 0001f000  | \"squashfs_ubi\"  |\n\nThis ONT supports dual boot. \n\n`kernel0` and `rootfs0` respectively contain the kernel and firmware of the first image, `kernel1` and `rootfs1` the kernel and firmware of the second one.\n\n{% include_relative ont-nokia-use.md %}\n\n{% include_relative ont-nokia-useful-command.md %}\n\n## Enable SSH (not persistent)\n\nPort 22 is filtered by default and the SSH daemon can be only enabled in runtime. Here is the procedure but it's not persistent and will need to be done again after each reboot:\n\nAccess UART with `ONTUSER`, then enter `system\\misc`.\n\nSet `ssh_en` to `1` with the command:\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>ssh_en set 1\n---ATECMDRESULT--- OK\n```\n\nGo back to `system`, then `shell` and run this command:\n```sh\n#ONT/system/misc>exit\n#ONT/system>shell\n#ONT/system/shell>iptables -F\n```\n## Enable Telnet Full Shell\n\nWhen using the default credentials to access telnet (`admin`\\\\`1234`), the prompt is limited to the `GponSLID` shell that only permits modifying or displaying the `PLOAM` password.\nIf you change the `admin_mask` to `255.255.255.255`, default credentials stop working but you can login as `ONTUSER` using the generated password to have full shell like when using UART.\n\nHere is the procedure to change `admin_mask`:\n\nAccess UART with `ONTUSER`, then enter `system\\misc`.\n\nSet `admin_mask` to `255.255.255.255` with the command:\n```sh\n#ONT>system\n#ONT/system>misc\n#ONT/system/misc>admin_mask set 255.255.255.255\nnormal load eep datat\n---ATECMDRESULT--- OK\n```\n\nNow reboot the ONT and you can access telnet with `ONTUSER` and full power :)\n"
  },
  {
    "path": "_ont_xgs/ont-nokia.md",
    "content": "---\ntitle: Nokia\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont_xgs/ont-zte-f2801s.md",
    "content": "---\ntitle: ZTE F2801S \nhas_children: false\nlayout: default\nparent: ZTE\n---\n\n# Hardware Specifications\n\n|              |                                   |\n| ------------ | --------------------------------- |\n| Vendor/Brand | ZTE                               |\n| Model        | F2801Sv2                          |\n| ODM          | ✅                                |\n| CPU          |                                   |\n| CPU Clock    |                                   |\n| Chipset      |                                   |\n| Flash        |                                   |\n| RAM          |                                   |\n| System       |                                   |\n| 10GBaseT     | Yes                               |\n| Optics       | SC/APC                            |\n| IP address   | 192.168.1.1                       |\n| Web Gui      | ✅ user `admin`, password `admin` |\n| SSH          |                                   |\n| Telnet       | ✅ [^1]                           |\n| Serial       | ✅                                |\n| Form Factor  | ONT                               |\n\n{% include image.html file=\"f2801s/front.jpg\" alt=\"F2801S front plate\" caption=\"F2801S front plate\" %}\n{% include image.html file=\"f2801s/internal.jpg\" alt=\"F2801S internal\" caption=\"F2801S internal layout\" %}\n\n\n## List of software versions\n### HW V2.0 \n- V2.0.10P7N1 (OpenFiber) \n- V2.0.10P7N2 (OpenFiber)\n\n## List of partitions \n\n### HW V2.0\n\n| dev  | size     | erasesize | name             |\n| ---- | -------- | --------- | ---------------- |\n| mtd0 | 08000000 | 00020000  | \"whole flash\"    |\n| mtd1 | 00200000 | 00020000  | \"u-boot\"         |\n| mtd2 | 00400000 | 00020000  | \"others\"         |\n| mtd3 | 00400000 | 00020000  | \"parameter tags\" |\n| mtd4 | 00400000 | 00020000  | \"wlan\"           |\n| mtd5 | 00800000 | 00020000  | \"usercfg\"        |\n| mtd6 | 00400000 | 00020000  | \"middle\"         |\n| mtd7 | 02a00000 | 00020000  | \"kernel1\"        |\n| mtd8 | 02a00000 | 00020000  | \"kernel2\"        |\n| mtd9 | 029e0000 | 00020000  | \"rootfs\"         |\n\n\nThis ONT supports dual boot, as visible from the presence of `kernel1` and `kernel2`, which contain the rootfs.\nThe boot images can be swapped with the following command:\n\n```sh\nupgradetest switchver X\n```\n\nWhere `X` can be `0/1`, based on the image you want to boot from.\n\n\nYou can also clone the currently running image into the other slot using this command:\n\n```sh\nsyn_version\n```\n\n# Use\n{% include alert.html content=\"Commands have been tested on V2 HW rev. on OpenFiber firmwares\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n## Enable Telnet\n{% include alert.html content=\"This is an external script ([ZTE Telnet enabler](https://github.com/douniwan5788/zte_modem_tools)), use at your own risk! Credentials don't survive at reboot!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```sh\npython3 zte_factroymode.py --user admin --pass admin --ip 192.168.1.1 --port 80 telnet open\n```\n\nYou should get this output and credentials to login over telnet:\n\n```sh\ntrying  user:\"admin\" pass:\"admin\"\nreset facTelnetSteps:\nreset OK!\n\nfacStep 1:\nOK!\n\nfacStep 2:\nOK!\n\nfacStep 3:\nOK!\n\nfacStep 4:\nOK!\n\nfacStep 5:\nOK!\n\ndone\nUsername: 2W3iqFVt\nPassword: Eqb8X8Qt\n```\n\n## Enable console redirection\n\nTo see omcidebug messages on telnet, execute this command (just the first time of each connection):\n\n```sh\nredir printf\n```\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\nTo check the connection status use the following command:\n```\ngpontest -gstate\n```\n`[gpontest] gpon state is [O5]` for O5 state\n\n## Getting  OLT vendor information\n\n```sh\nsendcmd 132 omcidebug showmedata 131\n```\n\nThis command will print the following output:\n\n```sh\n##################################\nMIB INFO:\n         ME CLASS: 131\n         DB NAME: olt_g, DBHandle: 32\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a2b1]----->\n         Vendorid:48 57 54 43\n      EquipmentID:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00 00 00 00 00 00 00\n          Version:31 30 00 00 00 00 00 00 00 00\n                    00 00 00 00\n        TimeofDay:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00\n---------------------------------------------------------------------\n```\n\n## Querying a particular OMCI ME\n\n```sh\nsendcmd 132 omcidebug showmedata ID_MIB (eg. 7 for Firmware version)\n```\n\nThis command will print the following output:\n\n```sh\n\n##################################\nMIB INFO:\n         ME CLASS: 7\n         DB NAME: soft_image, DBHandle: 14\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a011]----->\n          Version:V6.0.10N41\n     Is committed:01\n        Is active:01\n         Is valid:01\n\n<-----MeID[ 0x0001,1 ], Addr[ 0x19a031]----->\n          Version:V6.0.10N39\n     Is committed:00\n        Is active:00\n         Is valid:01\n---------------------------------------------------------------------\n```\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\n{% include alert.html content=\"Both S/N and VID have to be changed. 2176 is for the VID (first 4 letters of the S/N) and 2177 is for the last 8 digits of the S/N\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n```sh\nsetmac 1 2176 ZTEG\nsetmac 1 2177 AABBCCDD\n```\n\n## Setting ONU GPON PLOAM password\n\n{% include alert.html content=\"The PLOAM password is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\nThis can be done easily via the web UI. To do it via the shell use:\n```sh\nsetmac 1 2181 1234567890\nsetmac 1 2178 1234567890\n```\n\n# Advanced settings\n\n## Backing up ONT Paritions for HW/SW Version Mod\n\nThis step is suggested if you want to replace firmware on your ONT to spoof HW and SW version:\n\nNeeded tools:\n\n- Linux VM or WSL with Python >3.3\n- [ZTE Telnet enabler](https://github.com/douniwan5788/zte_modem_tools)\n- TFTP server\n\nThe first step is to login over telnet with `zte_factroymode.py`, then execute ALL these commands for a full backup:\n\n**Go to `/tmp` folder to create tmp files**\n\n```sh\ncd /tmp\n```\n\n**Dump and transfer all mtd **\n\nIn the following commands, 192.168.1.2 is the IP of the machine running the TFTP server, change it as needed.\n\n```sh\ncat /dev/mtd1 > u-boot.bin && tftp -l u-boot.bin -r u-boot.bin -p 192.168.1.2 && rm u-boot.bin\ncat /dev/mtd2 > others.bin && tftp -l others.bin -r others.bin -p 192.168.1.2 && rm others.bin\ncat /dev/mtd3 > parameter_tags.bin && tftp -l parameter_tags.bin -r parameter_tags.bin -p 192.168.1.2 && rm parameter_tags.bin\ncat /dev/mtd4 > wlan.bin && tftp -l wlan.bin -r wlan.bin -p 192.168.1.2 && rm wlan.bin\ncat /dev/mtd5 > usercfg.bin && tftp -l usercfg.bin -r usercfg.bin -p 192.168.1.2 && rm usercfg.bin\ncat /dev/mtd6 > middle.bin && tftp -l middle.bin -r middle.bin -p 192.168.1.2 && rm middle.bin\ncat /dev/mtd7 > kernel1.bin && tftp -l kernel1.bin -r kernel1.bin -p 192.168.1.2 && rm kernel1.bin\ncat /dev/mtd8 > kernel2.bin && tftp -l kernel2.bin -r kernel2.bin -p 192.168.1.2 && rm kernel2.bin\ncat /dev/mtd9 > rootfs.bin && tftp -l rootfs.bin -r rootfs.bin -p 192.168.1.2 && rm rootfs.bin\n\n```\n\n## Changing region code\n\n{% include alert.html content=\"Be aware that changing the region code may break features such as PPPoE depending on your ISP\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\nZTE has created various region codes that load default values based on the local ISP. This configuration can be changed using this command:\n\n```sh\nupgradetest sfactoryconf X\n```\n\nWhere X is the number of supported regioncode into file `/etc/init.d/regioncode`, here is an example from OpenFiber `V2.0.10P7N2` firmware:\n\n```sh\n# cat /etc/init.d/regioncode\n19:Turkey\n65:FTOrange\n116:Tescali\n139:Multilaser\n188:HollandKpnSfu\n198:Manufacture\n2010:Cetin\n```\n\n# Random notes\n- The F2801S reads the software version exposed through the gpon_omci deamon from each kernel partition header, so the only way to spoof this parameter is to change the version in the header and recalculate CRC, otherwise the bootloader will refuse to load the image\n\n# Miscellaneous Links\n\n- [ZTE Telnet enabled](https://github.com/douniwan5788/zte_modem_tools)\n\n---\n\n[^1]: It may be possible to flash an alternative firmware to avoid running the `zte_factory.py` script each time.\n[^2]: Credentials are randomly generated by zte_factroymode.py. They don't survive at reboot\n"
  },
  {
    "path": "_ont_xgs/ont-zte.md",
    "content": "---\ntitle: ZTE\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_ont_xgs/ont-zyxel-pm7300-t0.md",
    "content": "---\ntitle: Zyxel PM7300-T0\nhas_children: false\nlayout: default\nparent: Zyxel\n---\n\n# Hardware Specifications\n\n|              |                                        |\n| ------------ | -------------------------------------- |\n| Vendor/Brand | Zyxel                                  |\n| Model        | PM7300-T0                              |\n| Chipset      | MediaTek/EcoNet EN7580                 |\n| Flash        | 128 MiB SPI NAND (Macronix MXIC35LF1G) |\n| RAM          | 256 MiB                                |\n| 10GBaseT     | ✅ 1&nbsp;&times;                      |\n| Optics       | SC/APC                                 |\n| IP address   | 192.168.0.1/24                         |\n| Web Gui      | ✅ port 80/443                         |\n| SSH          | ✅ port 22                             |\n| Telnet       | ✅ port 23                             |\n| FTP          | ✅ port 21                             |\n| Serial       | ✅ (TTL 3.3V @ 115200,8n1)             |\n| Form Factor  | ONT                                    |\n\n{% include image.html file=\"zyxel-pm7300/ports.jpg\" alt=\"Zyxel PM7300-T0 ports\" caption=\"Zyxel PM7300-T0 ports\" %}\n\n\n## Tear down\n\n{% include image.html file=\"zyxel-pm7300/bottom.jpg\" alt=\"Zyxel PM7300-T0 bottom\" caption=\"Zyxel PM7300-T0 bottom\" %}\n\n{% include alert.html content=\"The GPON-SN on the sticker is not the same as you get from [Get GPON serial number](#get-gpon-serial-number)!\" alert=\"Hint\" icon=\"svg-info\" color=\"grey\" %}\n\nUnscrew the screws beneath the two encircled rubber feet.\nThen slide a plastic spudger/pry/case opening tool around to separate the top half from the bottom half of the case.\nPay attention that the board does not fall out when the case splits!\n\n{% include image.html file=\"zyxel-pm7300/board_top.jpg\" alt=\"Zyxel PM7300-T0 board\" caption=\"Zyxel PM7300-T0 board\" %}\n{% include image.html file=\"zyxel-pm7300/board_bottom.jpg\" alt=\"Zyxel PM7300-T0 board (bottom side)\" caption=\"Zyxel PM7300-T0 board (bottom side)\" %}\n\n\n## Get GPON serial number\n\nConnect via SSH (as admin):\n\n```console\nZySH> sys atsh\nFirmware Version       : V5.42(ABYY.1.3)C0\nBootbase Version       : V1.44 | 04/12/2023  9:18:33\nVendor Name            : Zyxel Communications Corp.\nProduct Model          : PM7300-T0\nSerial Number          : S230YNNNNNNNN\nGPON Serial Number     : ZYXE8CAXXXXX\n...\n```\n\nAlternatively, the command `ATSH` in the zloader bootloader can be used.\n\n## SSH\n\n```sh\nssh -o HostKeyAlgorithms=+ssh-rsa admin@192.168.0.1\n```\n\n{% include alert.html content=\"The device only presents SSH host keys using SHA1 which is not accepted anymore since OpenSSH 8.8. If the connection fails add `-o HostKeyAlgorithms=+ssh-rsa`. Other SSH clients may behave similarly.\" alert=\"Hint\" icon=\"svg-info\" color=\"grey\" %}\n\n\n## Serial\n\nFollow the procedure in [tear down](#tear-down) to open the case, then connect a USB-TTL adapter to the pin header:\n\n{% include image.html file=\"zyxel-pm7300/UART.jpg\" alt=\"Zyxel PM7300-T0 UART pins\" %}\n\n{% include alert.html content=\"Some USB-TTL adapters label Tx and Rx pins the other way around; try to swap them if the connection doesn't work.\" alert=\"Hint\" icon=\"svg-warning\" color=\"yellow\" %}\n\n**Baudrate:** 115200 8n1\n"
  },
  {
    "path": "_ont_xgs/ont-zyxel.md",
    "content": "---\ntitle: Zyxel\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_ont_xgs/serial_dump/fs-XGS-ONU-25-20NI_minishell.txt",
    "content": "+traffic             Service CLI menu\n\t+ces                 CES CLI menu (empty)\n\t+pon                 PON CLI menu\n\t\t+debug               PON debug command\n\t\t\t rptwanstat          config report wan status to MEC\n\t\t\t tcont               add/delete/flush a Tcont\n\t\t\t flow                configure the parameters of a flow\n\t\t\t queue               configure the parameters of a Tcont Queue\n\t\t\t sendomci            Send a OMCI message\n\t\t\t prbs                Enable/disable transmitting PRBS continuously\n\t\t\t dyingGsend          Enable/disable transmitting PRBS continuously\n\t\t\t omcidbg             Enable/disable kernel OMCI log\n\t\t\t reportGemCnt        Enable/disable report gem counter to MEC\n\t\t\t throughput          Enable/disable throughput test\n\t\t\t ponmode             Enable/disable qos\n\t\t\t dump_classifier     Dump classifier rule\n\t\t\t gem_to_cpu          trap gem port all packets to cpu\n\t\t+hw                  PON Hardware level command\n\t\t\t show                Show hardware status or configurations\n\t\t\t read_reg            Read register value\n\t\t\t write_reg           Write register value\n\t\t+ca                  PON cortina command\n\t\t\t show                Show cortina status or configurations\n\t\t+app                 PON APP command\n\t\t\t show                Show database in PMR app\n\t\t\t sendmsg             Send Msg to PMR app\n\t\t ber_interval        Configure the BER interval\n\t\t sf_threshold        The threshold of BIP to report signal failure\n\t\t sd_threshold        The threshold of BIP to report signal degrade\n\t\t sn                  Set the serial number of the ONT\n\t\t password            Set the password of ONT\n\t\t to1_to2             Set the To1 To2 timer of ONT\n\t\t show                show PON information\n\t+eth                 ETH CLI menu\n\t\t+debug               Ethernet Debug System CLI menu\n\t\t\t pack                Ethernet CLI debug function for pack driver\n\t\t\t brdg                Ethernet CLI debug function for SOC bridge\n\t\t\t phy                 Ethernet CLI debug function for PHY\n\t\t\t showconn            Show ethernet connection debug info\n\t\t\t ethdbg              enable/disable the eth debug flag\n\t\t show                Ethernet CLI Show\n\t+voip                VoIP CLI menu (empty)\n\t+omci                omci CLI menu\n\t\t+debug               OMCI Debug System CLI menu\n\t\t\t showemrcfg          show the configuration of EMR from MEC\n\t\t\t crc                 enable the crc check of omci message\n\t\t\t omiterr             Enable/disable omitting OMCI errors\n\t\t\t acpower             Start or stop power shedding\n\t\t\t allocid             Function call mec_AddAllocId\n\t\t\t ponstate            Function call mec_HandlePonStateChange\n\t\t+voip                OMCI VoIP System CLI menu\n\t\t\t show                show the configuration of VMR from MEC\n\t\t+defaultxml          MEC Xml List CLI menu\n\t\t\t show                show the List of default Xml from MEC\n\t\t\t crc_commit          runtime xml add crc\n\t\t\t restore_xml         runtime xml restore\n\t\t show                Show the information of MEC\n\t\t clear               Clear the runtime data\n\t+router              router CLI menu (empty)\n\t+dmr                 DMR CLI menu (empty)\n\t+hpna                HPNA CLI menu (empty)\n+system              System CLI menu\n\t+mib                 MIB CLI menu\n\t\t+debug               MIB Debug System CLI menu\n\t\t dump                Dump current mib to a file\n\t\t reset               Reset mib to default values\n\t\t show                Show the content of mib tables\n\t+log                 LOG CLI menu\n\t\t+kernel              KERNEL LOG CLI menu (empty)\n\t\t show                Print out a log\n\t\t dump                dump the content of a log file\n\t\t set                 Save a log to a file\n\t\t clear               Clear a log\n\t\t collectlog          Collectlog all log\n\t+env                 ENV CLI menu\n\t\t show                Print out enviroment variables\n\t+misc                MISC CLI menu\n\t\t+bob                 BOSA CLI menu\n\t\t\t eep                 Misc CLI Show\n\t\t\t unlock              Misc CLI Show\n\t\t\t echo                Misc CLI Show\n\t\t\t 2090                Misc CLI Show\n\t\t\t preheat             Misc CLI Show\n\t\t\t auto                Misc CLI Show\n\t\t\t automod             Misc CLI Show\n\t\t\t restart             Misc CLI Show\n\t\t+debug               Misc Debug System CLI menu\n\t\t\t showwc              Show write counter of mtd device\n\t\t\t showbad             Show bad blocks of mtd device\n\t\t show                Misc CLI Show\n\t\t rf                  Misc CLI Show\n\t\t filter              Misc CLI Show\n\t\t agc                 Misc CLI Show\n\t\t ponalarm            Misc CLI Show\n\t\t mpcode              Read or write eeprom : EEP_MFG_PRODUCTCODE\n\t\t mpsn                Read or write eeprom : EEP_MFG_PRODUCTSERIAL\n\t\t mhwv                Read or write eeprom : EEP_MFG_HWVERSION\n\t\t lasersn             Read or write eeprom : EEP_MFG_LASERSERIAL\n\t\t mac1                Read or write eeprom : EEP_MFG_MAC1\n\t\t mac2                Read or write eeprom : EEP_MFG_MAC2\n\t\t eepver              Read or write eeprom : EEP_MFG_EEPVER\n\t\t burnin              Read or write burnin flag : EEP_MFG_BURNIN\n\t\t rfthigh             Read or write rfthigh in unit of 64 ohm : EEP_MFG_RFT_HIGH\n\t\t rftlow              Read or write rftlow in unit of 64 ohm: EEP_MFG_RFT_LOW\n\t\t rithigh             Read or write rithigh in unit of 64 ohm : EEP_MFG_RIT_HIGH\n\t\t ritlow              Read or write ritlow in unit of 64 ohm: EEP_MFG_RIT_LOW\n\t\t major               Read or write eeprom : EEP_HW_FUNCTIONMAJOR\n\t\t minor               Read or write eeprom : EEP_HW_FUNCTIONMINOR\n\t\t hwver               Read or write eeprom : EEP_HW_VERSION\n\t\t vendor              Read or write eeprom : EEP_EQ_VENDORID\n\t\t eqsn                Read or write eeprom : EEP_EQ_SERIALNUMBER\n\t\t eqsnvend            Read or write eeprom : EEP_EQ_SNVENDOR\n\t\t eqvid               Read or write eeprom : EEP_EQ_VERSIONID\n\t\t eqid                Read or write eeprom : EEP_EQ_ID\n\t\t img_name            Read or write eeprom : EEP_SW_BOOTIMAGE\n\t\t admin_ip            Read or write eeprom : EEP_SW_IPADDR\n\t\t admin_mask          Read or write eeprom : EEP_SW_IPMASK\n\t\t server_ip           Read or write eeprom : EEP_SW_HOSTIPADDR\n\t\t admin_gw            Read or write eeprom : EEP_SW_GATEIPADDR\n\t\t ftp_user            Read or write eeprom : EEP_SW_FTPUSER\n\t\t ftp_passwd          Read or write eeprom : EEP_SW_FTPPASS\n\t\t bootflag            Read or write eeprom : EEP_SW_BOOTFLAG\n\t\t admin_en            Read or write eeprom : EEP_SW_BOOTREMOTEEN\n\t\t xgspon_regid        Read or write eeprom : XGS PON Registration ID\n\t\t test_en             Read or write eeprom : EEP_SW_BOOTTESTEN\n\t\t notcomplete         Read or write eeprom : EEP_SW_BOOTNOTCOMPLETE\n\t\t act_img             Read or write eeprom : EEP_SW_ACTIVEIMAGE\n\t\t commit_img          Read or write eeprom : EEP_SW_COMMITIMAGE\n\t\t pon_passwd          Read or write eeprom : EEP_APP_GPONPASSWORD\n\t\t register_id         Read or write eeprom : EEP_APP_GPONPASSWORD\n\t\t hwerr               Read or write eeprom : EEP_HW_DIAGNOSTICCODE\n\t\t vdsl2_vendor        Read or write eeprom : EEP_VDSL2_VENDORID\n\t\t ssh_en              Read or write eeprom : EEPROM_RW_CMD\n\t\t i2c_r               This command read i2c device in raw mode\n\t\t i2c_w               This command write i2c device in raw mode\n\t\t write_mem           This command is used to write otp\n\t\t read_mem            This command is used to read otp\n\t\t sendevent           This command is used to send led event directly\n\t\t testloaden          This command enable test load for manufacture\n\t\t testensn            This command enable test load for manufacture\n\t\t eep_reset           This command restore EEPROM factory default configuration\n\t\t eep_r8              This command read EEPROM in raw mode\n\t\t eep_w8              This command write EEPROM in raw mode\n\t\t eep_crc             This command update/check EEPROM crc value\n\t\t exeep_r8            This command read EEPROM in raw mode\n\t\t exeep_w8            This command write EEPROM in raw mode\n\t\t exeep_crc           This command update/check EEPROM crc value\n\t\t eepinfo             This command show eep info.\n\t\t clearcfg            This command is used to clear ONT runtime config , if full para is set, clear loid also!Usage: clearcfg [full]\n\t\t final_check         This command is used to show some important information for checking!\n\t\t led                 This command is used to only turn on green leds,red leds or off all leds!Usage: led gon/ron/off\n\t\t testloaden          This command enable test load for manufacture\n\t\t testensn            This command enable test load for manufacture\n\t\t get_gpio_val        This command get gpio value\n\t\t diswdt              This command disable for manufacture\n\t\t bosa                This command is used to set bosa version and type\n\t\t image_copy          This command copy one image to another at next boot time\n\t\t stopreboot          Stop reboot command for debug\n\t+manu                Manufacture CLI menu\n\t\t we                  This command write eeprom for manufacture\n\t\t wep                 This command only write PC for manufacture\n\t\t wes                 This command only write SN for manufacture\n\t\t wem1                This command only write MAC1 for manufacture\n\t\t wem2                This command only write MAC2 for manufacture\n\t\t ledon               This command turn on all led\n\t\t ledoff              This command turn off all led\n\t\t final_check         This command do final check\n\t\t get_gpio_val        This command get gpio value\n\t\t trans               This command show transceiver info\n\t\t temp                This command show system temperature\n\t\t er                  This command enable rf\n\t\t dr                  This command diable rf\n\t\t ef                  This command enable filter\n\t\t df                  This command disable filter\n\t\t ten                 This command enable test load\n\t\t wd                  This command disable watchdog\n\t\t tensn               This command enable test load, special for BL olt\n\t\t ces_main            This command configure ces connection for main test board\n\t\t ces_back            This command configure ces connection for backup test board\n\t\t check_boot_status   This command check boot status\n\t\t check_ranging_statusThis command check ranging status\n\t\t check_usb_port      This command does manu test for USB device\n\t\t reset_button_test   This command is used for Reset Button test\n\t\t factory_reset       Clear all configuration and return to factory setting\n\t\t load_certfile       Load ACS HTTPS private Cert file into ONT\n\t+fs                  File System CLI menu\n\t\t show                Show the content of system memory\n\t\t supgrade            super user Upgrade Image from Local Ftp Server\n\t\t flash               System Flash memory Operation command\n\t\t upgrade             Upgrade Image from Local Ftp Server\n\t\t check               check the content of system mtd\n\t+net                 NET CLI menu\n\t\t mirror              Set mirror debug\n\t\t dump                Set dump frames debug\n\t\t log                 Open/Close driver debug log\n\t\t atconn              Active connection debug\n\t\t show                Show NetMgr Data\n\t+shell               Shell\n\t+debug               System Debug CLI menu\n\t\t showtimer           Show timers\n\t\t showtask            Show task state\n\t\t starttimer          Start timers\n\t\t stoptimer           Start timers\n\t\t md5                 calculate MD5 value from input string\n\t\t md5num              calculate MD5 number string from input string\n\t\t printlog            Set the log level to print to console\n\t ontver              Show ONT Software Version\n\t custom              Get/Set ONT Software custom information"
  },
  {
    "path": "_router_pon/avm.md",
    "content": "---\ntitle: AVM\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_router_pon/avm_fritzbox.md",
    "content": "## SFP Whitelist\n\n- FRITZ!SFP AON (IEEE 802.3ah-2004 1000BASE-BX10, TX 1310 nm, RX 1480 to 1580 nm, LC/APC 8°, 10 km)[^aon]\n- FRITZ!SFP AON TV Filter (IEEE 802.3ah-2004 1000BASE-BX10)\n- FRITZ!SFP GPON (GPON ITU-T G.984.2/984.5, TX 1310 nm, RX 1490 nm, LC/UPC 8°, 20 km)\n- FRITZ!SFP XGS-PON (XGS-PON ITU-T G.9807 TX 1270 nm, RX 1577 nm, è l’unico che usa un SC/UPC, 20 km)\n\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\nIt is possible to change the serial number (\"Modem ID\") by editing it in the http://fritz.box/support.lua, in the ASCII format (ZTEG012345678).\nIf the Fritz!OS Version is => 7.50 and the device is set up to be in Germany, the field \"GPON PLOAM GPON serial number\" is missing.\n\n{% include image.html file=\"avm/avm_serial.jpg\"  alt=\"Serial number form\" caption=\"Serial number form\" %}\n\n\n## Setting ONU GPON PLOAM password\n\nIt is possible to change the GPON PLOAM passowrd by editing it in the logon data, in the ASCII format (PLOAM)\n\n{% include image.html file=\"avm/avm_ploam.png\"  alt=\"PLOAM Password form\" caption=\"PLOAM Password form\" %}\n\n--\n[^aon] [EWE AON Anschluss SFP Transceiver](https://www.glasfaserforum.de/forum/thread/984-ewe-aon-anschluss-sfp-transceiver/)\n"
  },
  {
    "path": "_router_pon/avm_fritzbox_5530.md",
    "content": "---\ntitle: AVM FRITZ!Box 5530\nhas_children: false\nlayout: default\nparent: AVM\n---\n\n# Hardware Specifications\n\n|                 |                                                                          |\n| --------------- | ------------------------------------------------------------------------ |\n| Vendor/Brand    | AVM FRITZ!Box 5530                                                       |\n| Model           | FRITZ!Box 5530                                                           |\n| ODM             | ✅                                                                       |\n| Chipset         | MaxLinear Falcon PRX321B1BI-S-LNEV MIPS32                                |\n| Flash           | 128 MB                                                                   |\n| RAM             | 1024 MB                                                                  |\n| Chipset         | MaxLinear Falcon PRX321B1BI-S-LNEV MIPS32                                |\n| CPU Clock       | 800 MHz                                                                  |\n| Bootloader      |                                                                          |\n| System          |                                                                          |\n| Load addr       |                                                                          |\n| SFP             | 1GBASE-BX10 (only FRITZ!SFP AON), PON equivalent symbol GPON and XGS-PON |\n| Ethernet        | 4 1GbE, 1 2.5GbE LAN/WAN                                                 |\n| Optics          | SC/UPC                                                                   |\n| IP address      | 192.168.1.254                                                            |\n| Web Gui         | ✅                                                                       |\n| SSH             |                                                                          |\n| Telnet          |                                                                          |\n| Serial          |                                                                          |\n| Serial baud     | 115200                                                                   |\n| Serial encoding | 8-N-1                                                                    |\n| Form Factor     | CPE with SFP w/o MAC support                                             |\n\n{% include_relative avm_fritzbox.md %}\n"
  },
  {
    "path": "_router_pon/avm_fritzbox_5590.md",
    "content": "---\ntitle: AVM FRITZ!Box 5590\nhas_children: false\nlayout: default\nparent: AVM\n---\n\n# Hardware Specifications\n\n|                 |                                                                          |\n| --------------- | ------------------------------------------------------------------------ |\n| Vendor/Brand    | AVM FRITZ!Box 5590                                                       |\n| Model           | FRITZ!Box 5590                                                           |\n| ODM             | ✅                                                                       |\n| Chipset         | MaxLinear Falcon PRX321B1BI-S-LNEV MIPS32                                |\n| Flash           | 4 GB                                                                     |\n| RAM             | 2048 MB                                                                  |\n| Chipset         | MaxLinear Falcon PRX321B1BI-S-LNEV MIPS32                                |\n| CPU Clock       | 800 MHz                                                                  |\n| Bootloader      |                                                                          |\n| System          |                                                                          |\n| Load addr       |                                                                          |\n| SFP             | 1GBASE-BX10 (only FRITZ!SFP AON), PON equivalent symbol GPON and XGS-PON |\n| Ethernet        | 4 1GbE, 1 2.5GbE LAN/WAN                                                 |\n| Optics          | SC/UPC                                                                   |\n| IP address      | 192.168.1.254                                                            |\n| Web Gui         | ✅                                                                       |\n| SSH             |                                                                          |\n| Telnet          |                                                                          |\n| Serial          |                                                                          |\n| Serial baud     | 115200                                                                   |\n| Serial encoding | 8-N-1                                                                    |\n| Form Factor     | CPE with SFP w/o MAC support                                             |\n\n{% include_relative avm_fritzbox.md %}\n"
  },
  {
    "path": "_router_pon/free_iliad.md",
    "content": "---\ntitle: Free/Iliad\nhas_children: true\nlayout: default\n---\n\n# Free/Iliad network\n\nIliad's (Italy) PON network is delivered through two types of technology: GPON or EPON where available. The latter is not actually pure 10G-EPON but DPoE (DOCSIS Provisioning over EPON), confirmed by analyzing the physical layer signals.\n\nUsing a Xilinx Kintex 7 FPGA with an integrated logic analyzer, an optical module has been connected to the FPGA's transceiver. The transceiver synchronized successfully and the sync header sequence was the one expected for 10G-EPON: a FEC codeword is a sequence of 31 words. Those words have a sync header binary value of `10` or `01` repeated 27 times corresponding to the original message plus `00, 11, 11, 00` corresponding to the FEC parity information. Discarding the latter part and descrambling the remaining data, the packets have been retrieved.\n\nAs an example, a packet starts with `55 d5 55 1b 3c 07 5f` in hex, which corresponds to a DPoE (10G) preamble (actually it's missing one starting `0x55` byte but the CRC8 at the end is correct nonetheless).\n"
  },
  {
    "path": "_router_pon/free_iliad_box_pop.md",
    "content": "---\ntitle: FreeBox Pop/IliadBox\nhas_children: false\nlayout: default\nparent: Free/Iliad\n---\n\n# Hardware Specifications\n\n|                  |                                                                                    |\n| ---------------- | ---------------------------------------------------------------------------------- |\n| Vendor/Brand     | Free/Iliad                                                                         |\n| Model            |                                                                                    |\n| ODM              |                                                                                    |\n| ODM Product Code |                                                                                    |\n| Chipset          | BCM63153                                                                           |\n| Flash            | 4GB eMMC 5.1 KLM4G1FETE-B041                                                       |\n| RAM              | 2x 512MB DDR3L-1866 NT5CC128M16JR-EK                                               |\n| CPU              |                                                                                    |\n| CPU Clock        |                                                                                    |\n| Bootloader       |                                                                                    |\n| System           |                                                                                    |\n| Load addr        |                                                                                    |\n| SFP              | 1G-BASEX, 10G-BASESR-LR, HSGMII (only AFM0003ILD), PON equivalent symbol EPON 10/1 |\n| Ethernet         | 2 1GbE, 1 2.5GbE LAN/WAN                                                           |\n| Optics           | SC/UPC                                                                             |\n| IP address       | 192.168.1.254                                                                      |\n| Web Gui          | ✅                                                                                 |\n| SSH              |                                                                                    |\n| Telnet           |                                                                                    |\n| Serial           |                                                                                    |\n| Serial baud      | 115200                                                                             |\n| Serial encoding  | 8-N-1                                                                              |\n| Form Factor      | CPE with SFP w/o MAC support                                                       |\n\n\n\n## Serial\n\nThe serial port is routed through the USB-C port used for power (which is PD compliant, tested with a notebook power supply). The pins are SBU1 and SBU2, reversal is handled using an open drain buffer (SN74LVC2G07) so a pull-up resistor on RX is needed. On the power daughter board TP7 is TX and TP8 is RX. There is also a USB differential pair routed through the USB-C connector but there is no use for it yet.\nAt the moment nothing more than a boot log is available. [^bcm61650hack] [^freeboxhack]\n\n## SFP Whitelist\n- WTD RTXM166-401-C13 (EPON w/o MAC)\n- WTD RTXM166-401-C11 (EPON w/o MAC)\n- Hisense LTF7215-BH+ (EPON w/o MAC)\n- [Technicolor AFM0003](/ont-technicolor-afm0003) (GPON with MAC)\n- SFP Copper 10Gtek  (1 and 10 Gbps)\n\n# Miscellaneous Links\n\n[^bcm61650hack]: *Pwning the bcm61650* https://blog.xilokar.info/pwning-the-bcm61650.html\n[^freeboxhack]: *Firmware key extraction by gaining EL3* https://blog.xilokar.info/firmware-key-extraction-by-gaining-el3.html\n"
  },
  {
    "path": "_router_pon/ont-zte-f6645p.md",
    "content": "---\ntitle: ZTE F6645P \nhas_children: false\nlayout: default\nparent: ZTE\n---\n\n# Hardware Specifications\n\n|              |                               |\n| ------------ | ----------------------------- |\n| Vendor/Brand | ZTE                           |\n| Model        | F6645P                        |\n| ODM          | ✅                            |\n| CPU          | ZTE                           |\n| CPU Clock    | 266 MHz                       |\n| Chipset      | ZTE                           |\n| Flash        | 130 MB Kioxia TC58BVG0S3HTAI0 |\n| RAM          | 315 MB                        |\n| System       |                               |\n| 2.5GBaseT    | Yes                           |\n| Optics       | SC/APC or SC/UPC              |\n| IP address   | 192.168.1.1                   |\n| Web Gui      | Random password               |\n| SSH          |                               |\n| Telnet       | ✅ [^1]                       |\n| Serial       | Only RX                       |\n| Form Factor  | ONT                           |\n\n## List of partitions \n\n| dev  | size     | erasesize | name             |\n| ---- | -------- | --------- | ---------------- |\n| mtd0 | 08000000 | 00020000  | \"whole flash\"    |\n| mtd1 | 00200000 | 00020000  | \"u-boot\"         |\n| mtd2 | 00400000 | 00020000  | \"others\"         |\n| mtd3 | 00400000 | 00020000  | \"parameter tags\" |\n| mtd4 | 00400000 | 00020000  | \"wlan\"           |\n| mtd5 | 00800000 | 00020000  | \"usercfg\"        |\n| mtd6 | 00400000 | 00020000  | \"Plugin\"         |\n| mtd7 | 02a00000 | 00020000  | \"kernel1\"        |\n| mtd8 | 02a00000 | 00020000  | \"kernel2\"        |\n| mtd9 | 029e0000 | 00020000  | \"rootfs\"         |\n\n\n\nThis ONT supports dual boot, as visible from the presence of `kernel0` and `kernel1`, which contain the rootfs.\nThe boot images can be swapped with the following command:\n\n```sh\nupgradetest switchver X\n```\n\nWhere `X` can be `0/1`, based on the image you want to boot from.\n\n\nYou can also clone the currently running image into the other slot using this command:\n\n```sh\nsyn_version\n```\n\n# Use\n\n## Enable Telnet\n{% include alert.html content=\"This is an external script ([ZTE Telnet enabler](https://github.com/douniwan5788/zte_modem_tools)), use at your own risk! Credentials don't survive at reboot!\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n\n```sh\npython3 zte_factroymode.py --user admin --pass admin --ip 192.168.1.1 --port 80 telnet open\n```\n\nYou should get this output and credentials to login over telnet:\n\n```sh\ntrying  user:\"admin\" pass:\"admin\"\nreset facTelnetSteps:\nreset OK!\n\nfacStep 1:\nOK!\n\nfacStep 2:\nOK!\n\nfacStep 3:\nOK!\n\nfacStep 4:\nOK!\n\nfacStep 5:\nOK!\n\ndone\nUsername: 2W3iqFVt\nPassword: Eqb8X8Qt\n```\n\n## Enable console redirection\n\nTo see omcidebug messages on telnet, execute this command (just the first time of each connection):\n\n```sh\nredir printf\n```\n\n# GPON ONU status\n\n## Getting the operational status of the ONU\n\nTo check the connection status, use the following command:\n```\ngpontest -gstate\n```\n`[gpontest] gpon state is [O5]` for O5 state\n\n## Getting  OLT vendor information\n\n```sh\nsendcmd 132 omcidebug showmedata 131\n```\n\nThis command will print the following output:\n\n```sh\n##################################\nMIB INFO:\n         ME CLASS: 131\n         DB NAME: olt_g, DBHandle: 32\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a2b1]----->\n         Vendorid:48 57 54 43\n      EquipmentID:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00 00 00 00 00 00 00\n          Version:31 30 00 00 00 00 00 00 00 00\n                    00 00 00 00\n        TimeofDay:00 00 00 00 00 00 00 00 00 00\n                    00 00 00 00\n---------------------------------------------------------------------\n```\n\n## Querying a particular OMCI ME\n\n```sh\nsendcmd 132 omcidebug showmedata ID_MIB (eg. 7 for Firmware version)\n```\n\nThis command will print the following output:\n\n```sh\n\n##################################\nMIB INFO:\n         ME CLASS: 7\n         DB NAME: soft_image, DBHandle: 14\n##################################\n\n<-----MeID[ 0x0000,0 ], Addr[ 0x19a011]----->\n          Version:V6.0.10N41\n     Is committed:01\n        Is active:01\n         Is valid:01\n\n<-----MeID[ 0x0001,1 ], Addr[ 0x19a031]----->\n          Version:V6.0.10N39\n     Is committed:00\n        Is active:00\n         Is valid:01\n---------------------------------------------------------------------\n```\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\n{% include alert.html content=\"Both S/N and VID have to be changed. 2176 is for the VID (first 4 letters of the S/N) and 2177 is for the last 8 digits of the S/N\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\n```sh\nsetmac 1 2176 ZTEG\nsetmac 1 2177 AABBCCDD\n```\n\n## Setting ONU GPON PLOAM password\n\n{% include alert.html content=\"The PLOAM password is stored in the ASCII format.\" alert=\"Note\"  icon=\"svg-info\" color=\"blue\" %}\nThis can be done easily via the web UI. To do it via the shell use:\n```sh\nsetmac 1 2181 1234567890\nsetmac 1 2178 1234567890\n```\n\n\n# Miscellaneous Links\n\n- [ZTE Telnet enabled](https://github.com/douniwan5788/zte_modem_tools)\n\n---\n\n[^2]: Credentials are randomly generated by zte_factroymode.py, they are not persistent and will change at reboot."
  },
  {
    "path": "_router_pon/ont-zte.md",
    "content": "---\ntitle: ZTE\nhas_children: true\nlayout: default\n---"
  },
  {
    "path": "_router_pon/tp_link.md",
    "content": "---\ntitle: TP-Link\nhas_children: true\nlayout: default\n---\n"
  },
  {
    "path": "_router_pon/tp_link_xb432v.md",
    "content": "---\ntitle: TP-Link XB432V \nhas_children: false\nlayout: default\nparent: TP-Link\n---\n\n# Hardware Specifications\n\n|              |                               |\n| ------------ | ----------------------------- |\n| Vendor/Brand | TP-Link                       |\n| Model        | XB432V                        |\n| ODM          |                               |\n| CPU          |                               |\n| CPU Clock    |                               |\n| Chipset      |                               |\n| Flash        |                               |\n| RAM          |                               |\n| System       |                               |\n| Ethernet     | 2 1GbE LAN, 1 2.5GbE LAN, 1 2.5GbE WAN  |\n| Optics       | SC/APC                        |\n| IP address   | 192.168.1.1                   |\n| Web Gui      | ✅                            |\n| SSH          |                               |\n| Telnet       |                               |\n| Serial       | Only RX                       |\n| Form Factor  | CPE with ONT                  |\n\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\nIn the \"Rete -> Impostazioni GPON\" page, GPON SN field is disabled and not editable. It can be enabled via the browser’s developer console by editing the HTML code and setting HTML `disabled` attribute to `enabled`.\n\n{% include image.html file=\"tp-link/xb432v-change-sn.jpg\" alt=\"XB432V procedure for changing GPON SN\" caption=\"XB432V procedure for changing GPON SN\" %}\n\n## Setting ONU GPON PLOAM password\n\nThis can be easily done via the Web UI from the same \"Rete -> Impostazioni GPON\" page. The password field is already editable.\n\n\n# Miscellaneous Links\n\n- [User manual](https://www.windtre.it/Document/manuali/modem/Manuale_XB432v-ITWIND3-1-0_UG_IT.pdf.docview.pdf)\n"
  },
  {
    "path": "_router_pon/tp_link_xx800v.md",
    "content": "---\ntitle: TP-Link XX800V \nhas_children: false\nlayout: default\nparent: TP-Link\n---\n\n# Hardware Specifications\n\n|              |                               |\n| ------------ | ----------------------------- |\n| Vendor/Brand | TP-Link                       |\n| Model        | XX800V                        |\n| ODM          |                               |\n| CPU          |                               |\n| CPU Clock    |                               |\n| Chipset      |                               |\n| Flash        |                               |\n| RAM          |                               |\n| System       |                               |\n| Ethernet     | 3 1GbE LAN, 1 2.5GbE WAN      |\n| Optics       | SC/APC                        |\n| IP address   | 192.168.1.1                   |\n| Web Gui      | ✅                            |\n| SSH          |                               |\n| Telnet       |                               |\n| Serial       | Only RX                       |\n| Form Factor  | CPE with ONT                  |\n\n\n# GPON/OMCI settings\n\n## Setting ONU GPON Serial Number\n\nIn the \"Rete -> Impostazioni GPON\" page, GPON SN field is disabled and not editable. It can be enabled via the browser’s developer console by editing the HTML code and setting HTML `disabled` attribute to `enabled`.\n\n{% include image.html file=\"tp-link/xb432v-change-sn.jpg\" alt=\"XB432V procedure for changing GPON SN\" caption=\"XB432V procedure for changing GPON SN\" %}\n\n## Setting ONU GPON PLOAM password\n\nThis can be easily done via the Web UI from the same \"Rete -> Impostazioni GPON\" page. The password field is already editable.\n\n\n# Miscellaneous Links\n\n- [User manual](https://www.windtre.it/Document/manuali/modem/XX800v-ITWIND3_UG_REV1-0-0_Italian.pdf.docview.pdf)\n"
  },
  {
    "path": "_sass/custom/custom.scss",
    "content": ".page-header {\n\n    .github-edit {\n        color: $nav-child-link-color;\n        float: right;\n        \n        &:hover {\n            color: $link-color;\n\n            svg {\n                fill: $link-color ;\n            }\n        }\n\n        svg {\n            display: inline;\n            vertical-align: top;\n            width: 1.5 * $spacing-unit;\n            height: 1.5 * $spacing-unit;\n            fill: $nav-child-link-color;\n        }\n    }\n\n    h1 {\n        margin-right: 3.5 * $spacing-unit;\n    }\n}\n\n\n.avatar {\n    border-radius: 50%;\n    width: 1.5 * $spacing-unit;\n    height: 1.5 * $spacing-unit;\n}\n\n\n\nul.metadata {\n    flex-wrap: wrap;\n    list-style: none;\n    display: flex;\n    margin: 0!important;\n    padding: 0.125rem 0 0!important;\n    >li{\n        flex-basis: auto;\n        align-items: center;\n        list-style: none;\n        display: flex;\n\n        &:not(:last-of-type):not(:only-of-type)::after {\n            content: \"•\";\n            padding-left: 5px;\n            padding-right: 5px;\n            color: $grey-500;\n        }\n\n        &::before {\n            content: \"\";\n        }\n    }\n}\n  \n/* Add Animation */\n@keyframes animatetop {\n    from {top: -300px; opacity: 0}\n    to {top: 0; opacity: 1}\n}\n\nfigure {\n    border:  $border $border-color;\n    border-radius: $border-radius;\n    display: table;\n    \n    figcaption {\n        background-color: $code-background-color;\n        padding: 8px;\n    }\n    img{\n        vertical-align: middle;\n        border-top-left-radius: $border-radius;\n        border-top-right-radius: $border-radius;\n    }\n}\n\n.ont-404 svg {\n    fill: $body-text-color;\n    width: 100%;\n}\n\n.animated {\n    svg {\n        width: 100px;\n        display: block;\n        margin: 40px auto 0;\n    }\n    &.pause {\n        svg .success, svg .error, svg .loading {\n            display: none;\n        }\n    }\n    &.success {\n        color: $green-500;\n        fill: $green-500;\n        svg .error, svg .loading, svg .pause {\n            display: none;\n        }\n    }\n    &.error {\n        color: $red-500;\n        fill: $red-500;\n        svg .success, svg .loading, svg .pause {\n            display: none;\n        }\n    }\n    &.loading {\n        svg .success, svg .error, svg .pause {\n            display: none;\n        }\n        svg .path {\n            stroke-dasharray: 269%;\n            stroke-dashoffset: 0;\n            -webkit-animation: loading 1s cubic-bezier(1,1,1,1) 0s infinite;\n            animation: loading 1s cubic-bezier(1,1,1,1) 0s infinite;\n            transform-origin: 50% 50%;\n            -webkit-transform-origin: 50% 50%;\n            -moz-transform-origin: 50px 50px;\n        }\n    }\n    &.complete {\n        svg .path {\n            stroke-dasharray: 314%;\n            stroke-dashoffset: 0;\n        }\n    }\n        \n    .path {\n        stroke-dasharray: 1000;\n        stroke-dashoffset: 0;\n        &.circle {\n            -webkit-animation: dash .9s ease-in-out;\n            animation: dash .9s ease-in-out;\n        }\n        &.line {\n            stroke-dashoffset: 1000;\n            -webkit-animation: dash .9s .35s ease-in-out forwards;\n            animation: dash .9s .35s ease-in-out forwards;\n        }\n        &.check {\n            stroke-dashoffset: -100;\n            -webkit-animation: dash-check .9s .35s ease-in-out forwards;\n            animation: dash-check .9s .35s ease-in-out forwards;\n        }\n    }\n        \n    p {\n        text-align: center;\n        margin: 20px 0 60px;\n        font-size: 1.25em;\n    }\n\n    @keyframes rotate {\n        100% {\n            transform: rotate(360deg);\n        }\n    }\n      \n    @keyframes loading {\n        0% {\n            stroke-dasharray: 44% 269%;\n            stroke-dashoffset: 0%;\n        }\n        50% {\n            stroke-dasharray: 156%;\n            stroke-dashoffset: 156%;\n        }\n        100% {\n          stroke-dasharray: 44% 269%;\n          stroke-dashoffset: 314%;\n        }\n    }\n        \n    @-webkit-keyframes dash {\n        0% {\n            stroke-dashoffset: 1000;\n        }\n        100% {\n            stroke-dashoffset: 0;\n        }\n    }\n        \n    @keyframes dash {\n        0% {\n            stroke-dashoffset: 1000;\n        }\n        100% {\n            stroke-dashoffset: 0;\n        }\n    }\n        \n    @-webkit-keyframes dash-check {\n        0% {\n            stroke-dashoffset: -100;\n        }\n        100% {\n            stroke-dashoffset: 900;\n        }\n    }\n        \n    @keyframes dash-check {\n        0% {\n            stroke-dashoffset: -100;\n        }\n        100% {\n            stroke-dashoffset: 900;\n        }\n    }\n    \n    @-webkit-keyframes check {\n        0% {\n            stroke-dashoffset: -110;\n        }\n        100% {\n            stroke-dashoffset: 0;\n        }\n    }\n    @keyframes check {\n        0% {\n            stroke-dashoffset: -110;\n        }\n        100% {\n            stroke-dashoffset: 0;\n        }\n    }\n}\n\nprogress {\n    width: 100%;\n}"
  },
  {
    "path": "_sfp/bosa-tosa-rosa.md",
    "content": "---\ntitle: \"BOSA, TOSA and ROSA: the conversion from optical to electrical\"\nhas_children: false\nnav_order: 3\nlayout: default\n---\n\nIn optical-electrical conversions, special components called TOSA (Transmitter Optical Sub Assembly) and ROSA (Receiver Optical Sub Assembly) are used to convert the signal.\nThey are responsible for translating the optical signal into a corresponding electrical signal and viceversa, which inputs or outputs symbols corresponding to the optical values. These values, which we refer to as unprocessed or RAW values for simplicity, are not standard signals and must be converted into standard signals[^huawei].\n\nTOSA and ROSA are essential components in the uni-directional transceivers which transmit on one fiber optic strand and receive on the other fiber optic strand. \n\n{% include image.html file=\"ont-wo-mac/rosa.png\" alt=\"ROSA\" caption=\"ROSA\" %}\n{% include image.html file=\"ont-wo-mac/tosa.png\" alt=\"TOSA\" caption=\"TOSA\" %}\n\nIn order to ensure bi-directional communication, it is also possible to use a TOSA and a ROSA, or a BOSA which is a combination of a TOSA, a ROSA and additionally a WDM filter. The WDM filter split the wavelengths into two separate wavelengths[^huawei].\n\n{% include image.html file=\"ont-wo-mac/bidi.jpg\" alt=\"Bi-Directional comunication obtain through a TOSA and a ROSA\" caption=\"Bi-Directional comunication obtain through a TOSA and a ROSA\" %}\n{% include image.html file=\"ont-wo-mac/bosa.jpg\" alt=\"BOSA\" caption=\"BOSA\" %}\n\n---\n\n[^huawei]: *What is inside a SFP transceiver?* https://forum.huawei.com/enterprise/en/what-is-inside-a-sfp-transceiver/thread/782827-861"
  },
  {
    "path": "_sfp/ont-wo-mac.md",
    "content": "---\ntitle: SFP with PON MAC and w/o PON MAC\nhas_children: false\nnav_order: 2\nlayout: default\n---\n\nPON technologies, unlike Ethernet, are not P2P but one-to-many with two device types: ONU (Optical Network Unit)/ONT (Optical Network Terminal) and OLT (Optical Line Terminal). Both devices can be manufactured using the SFP form factor[^tibit].\n\nThe OLT provides an integrated access box for Passive Optical Networks. OLTs are typically chassis with one or more line cards inside, and on each line card there is one or more PON transceiver, usually in the SFP form factor. Each line card is connected to a secondary switch that provides line card aggregation to the Ethernet uplinks. OLTs are often a mixture of Layer 2 and Layer 3 switching with traffic shaping on a per-customer, per-service basis[^tibit].\n\nThe communication within the SFP PON transceiver is neither MII nor Ethernet, outside [SFP standards](/sfp-standard.md), but rather it is an *equivalent electrical symbols of optical transmission* (which is simply the input/output of the [BOSA](/bosa-tosa-rosa.md)) that for simplicity's sake we call **PON RAW communication** (also referred to as SFP w/o PON MAC). All the PON management part is left to the line card itself. Each equivalent electrical symbol of optical transmission is a separate dialect, distinct from other dialects. Furthermore, as one can easily guess, this communication is not standard and is not within the signalling standards ([^sfprate],[^sfprate2],[^sfpplusstandard]) but it is compliant with some portions of the MSA [^sfpstandard],[^sfpplusstandard],[^sfpplusmi]. This requires extreme compatibility between ONT and transceiver. This design choice is made for several reasons:\n- *size*: the size of an OLT w/o PON MAC is very similar to that of an MII or Ethernet transceiver, and the size of an OLT with the integrated PON MAC far exceeds that of the standard SFP form factor;\n- *dissipative heating capacity*: the dissipative heating capacity of an OLT with PON MAC is higher than a normal transceiver, such as a 1 or 10 Gbps Ethernet link;\n- *duplication*: there is a double `MAC` → `MII` conversion (`MII` → `MAC` → `PHY` → `MAC` → `OLT CPU`);\n- *repairability*: since lasers often have a shorter lifetime than other ICs, it is good to be able to only change the transceiver.\n\nDespite this, there is a vendor that sells OLT SFPs with PON MAC[^tibit]. The following pictures show an OLT SFP with PON MAC part and a transreciver without PON MAC. It is interesting to see that the latter is much longer and requires an additional heatsink.\n\n{% include image.html file=\"ont-wo-mac/tibit.png\" alt=\"PON OLT with MAC\" caption=\"PON OLT with MAC\" %}\n{% include image.html file=\"ont-wo-mac/huawei.png\" alt=\"PON transceiver for OLT w/o MAC\" caption=\"PON transceiver for OLT w/o MAC\" %}\n\nSimilarly, the same argument can be made for ONT SFPs, especially in 10E-PON and XGS-PON there are a lot of transceivers w/o PON MAC and few ONTs with PON MAC. In this case, the reasons are similar to the OLT SFPs'. It is also clear that ONTs w/o PON MAC require a PON MAC part within the end device that supports the relevant communication protocol.\n\nThe following pictures show some operating diagrams of some ONT with PON MAC and ONT w/o PON MAC[^SFPP-XGS-ONU-MAC-ASC-I-C],[^SFPP-XGS-ONU-N1-I-C],[^MSOG22-xD6C-xxT1].\n\n{% include image.html file=\"ont-wo-mac/onu-with-mac.jpg\" alt=\"Physical scheme of an ONT with MAC PON\" caption=\"Physical scheme of an ONT with MAC PON\" %}\n\n```mermaid\ngraph TD\n    F[fiber] --> A;\n\n    subgraph SFP[SFP with MAC]\n        B -->|Rx| A\n        A[BOSA] -->|Tx| B(BOSA/LD Driver - Limiting Amplifier)\n        \n        B <--> C[PON MAC]\n        C --> N[Nand Flash]\n        C --> E[MCU - EEPROM]\n    end;\n    subgraph CS[Cage SFP]\n    E --> |I2C| Controller;\n    C --> |MII on Tx - Rx| MAC;\n    Controller[Controller I2C] --> Switch;\n    MAC --> Switch;\n    end;\n```\n\n{% include image.html file=\"ont-wo-mac/onu-wo-mac.jpg\" alt=\"Physical scheme of an ONT w/o MAC PON\" caption=\"Physical scheme of an ONT w/o MAC PON\" %}\n\n```mermaid\ngraph TD\n    F[fiber] --> A;\n\n    subgraph SFP[SFP w/o MAC]\n        B -->|Rx| A\n        A[BOSA] -->|Tx| B(BOSA/LD Driver - Limiting Amplifier)\n        B <--> E[MCU - EEPROM]\n    end;\n    subgraph CS[Cage SFP]\n    E --> |I2C| Controller;\n    B --> |RAW PON on Tx - Rx| MAC[PON MAC];\n    Controller[Controller I2C] --> Switch;\n    MAC --> Switch;\n    end;\n```\n\n# Why are there no ONTs w/o MAC on Hack GPON?\n\nFor usefulness reasons, all SFPs w/o PON MAC are not illustrated on Hack GPON as they are not modifiable like ONTs with MAC (they require two inter-compatible devices). \n\nIn particular, the SFP ONU of the AVM Fritz!Box 5530/5590 belongs in this category, and that the above-mentioned devices are not compatible with any other SFP using MII/Ethernet/Fibre Channel, while for example the FreeBox or IliadBox supports both ONU w/o PON MAC and some SFP with MAC.\n\nIn general, these devices do not have enough customisation to allow the required parameters to be changed other than the GPON Serial Number and GPON Ploam Password. This means that in most scenarios these devices with ONT w/o MAC are not flexible enough to be used as a replacement for an ISP-provided ONT.\n\nNevertheless, on Hack-GPON routers supporting SFP w/o MAC will arrive, with at least the modification of GPON Serial Number and GPON Ploam Password.\n\n---\n\n[^sfpstandard]: *Specification for SFP (Small Formfactor Pluggable) Transceiver* INF-8074\n[^sfprate]: *SFP Rate and Application Selection* SFF-8079\n[^sfprate2]: *SFP (Small Formfactor Pluggable) Rate and Application Codes* SFF-8089\n[^sfpplusmi]: *Management Interface for SFP+* SFF-8472\n[^sfpplusstandard]: *Enhanced Small Form Factor Pluggable Module SFP+* SFF-8431\n[^tibit]: *ONT Tibit MicroPlug Modules: Architecture* https://tibitcom.com/architecture/\n[^SFPP-XGS-ONU-MAC-ASC-I-C]: *ProLabs SFPP-XGS-ONU-MAC-ASC-I-C* https://s3-us-west-2.amazonaws.com/configurator.computer/55/files/99138/218/SFPP-XGS-ONU-MAC-ASC-I-C/SFPP-XGS-ONU-MAC-ASC-I-C_Datasheets_EN.pdf\n[^SFPP-XGS-ONU-N1-I-C]: *ProLabs SFPP-XGS-ONU-N1-I-C* https://www.prolabs.com/product/SFPP-XGS-ONU-N1-I-C\n[^MSOG22-xD6C-xxT1]: *Mentech MSOG22-xD6C-xxT1* https://www.mnc-optical.com/upload/goods/20201109/202011090724113094.pdf\n"
  },
  {
    "path": "_sfp/sfp-standard.md",
    "content": "---\ntitle: SFP standard and ONT\nhas_children: false\nnav_order: 1\nlayout: default\n---\n\n\nThe organisation that developed SFPs (MSA SFP) has always been very cautious about defining a hardened list of admissible signals for SFPs, their first standard only providing pinout, form-factor and dissipative capacity specifications. It is up to the manufacturer to decide which communication to use in the Tx and Rx pins[^sfpstandard]. \nAfter the SFP standard entered the market, in the early 2000s with Ethernet and Fibre Channel, the MSA SFP also started standardising signalling, starting with [^sfprate] and [^sfprate2] which define a list of admissible standard signalling limited to the capabilities of the current form factor SFP.\nWith the need to increase the heat dissipation characteristics of the modules (in order to increase speeds) and to allow some additions to the EEPROM, an additional standard, called SFP+[^sfpplusstandard],[^sfpplusmi],[^xenpak_xfp], was developed, which contains all the aforementioned improvements. The 16GFC, 20GFC signalling for Fibre Channel and the 10 Gbps and 2.5 signalling for Ethernet were also included in the updated [^sfprate] and [^sfprate2] standard. Some of these are also included in [^sfpplusstandard] locking the SFP+ standard to a tenth of signalling, all other signals should fall under the SFP standard[^sfpstandard], but they can use the extended SFP+ management interface[^sfpplusmi].\n\nThe Ethernet signals are all very similar, but there are some differences between Base-X and MII. The media-independent interface (MII) was defined in the IEEE 802.11u standard. It was originally defined as a standard interface to connect a Fast Ethernet MAC block (i.e. CPU, switch) to a PHY chip (i.e. twisted pair, fiber optic, etc.) in a standardised way. The main advantage is that MII can be used without redesigning or replacing the MAC hardware. Thus any MAC may be used with any PHY, independent of the network signal transmission media[^ethernet].\n\nThe main difference is the physical media over which the frames are: \n- *Base-X* is based on the Ethernet PHYsical Layer (layer 1) and this standard uses the 8B/10B coding (or other encodings as specified in the EEPROM), and *MII* is based on the Ethernet MAC Device (layer 2, the device that actually makes and receives Ethernet frames)[^ethernet].\n- In *Base-X*, auto-negotiation is limited to flow-control (and duplex, which is not really used since it's always full-duplex), and in *MII*, auto-negotiation (AN) also allows the PHY to indicate to the MAC the post-PHY link speed. Even though the MAC-to-PHY SGMII link is always 1000Mbps, it supports 10, 100 and 1000Mbps past the PHY and the MAC needs to know this to space out the bits properly (e. g. if the external link is 100Mbps, each bit on the SGMII link is sent 10 times)[^ethernet].\n\nMII can be used to connect a MAC to an external PHY using a pluggable connector, or directly to a PHY chip on the same PCB. In the first case it is also used in SFP connectors, for example to allow connections between two MAC blocks without passing through a PHY (i.e. passive DAC).\nThis technology, and in particular its evolutions such as RGMII[^rgmii], SGMII[^sgmii], QSGMII[^qsgmii], XGMII[^intel], USXGMII[^xilinx], is widely used as a communication bus over SFP, in addition to IEEE BaseX[^ethernet]. The 2.5G-SGMII or HSGMII[^altium] and 10G-SGMII or XSGMII[^aquantia] standards are specifics that increase the clock speed of the SGMII standard without redefining it.\n\nRGMII, SGMII, 1000BaseX standards allow a speed of 1 Gbps, 2.5BaseX and HSGMII standards of 2.5 Gbps, the XGMII, XSGMII, USXGMII and 10GBaseT of 10 Gbps.\n\n---\n[^xenpak_xfp]: With the advent of higher speeds MSA has developed several new interfaces, such as XENPAK, X2, XPAK, XFP, but the newest standard is the transceiver is called SFP+. Based on the same form factor as SFP, it is smaller than its predecessors and has lower power than XFP. SFP+ has become the most popular socket on 10GbE systems because it shares a common physical form factor with legacy SFP modules, allowing higher port density than XFP and the reuse of existing designs for 24 or 48 ports in a 19-inch rack width blade.\n[^sfpstandard]: *Specification for SFP (Small Formfactor Pluggable) Transceiver* INF-8074\n[^sfprate]: *SFP Rate and Application Selection* SFF-8079\n[^sfprate2]: *SFP (Small Formfactor Pluggable) Rate and Application Codes* SFF-8089\n[^sfpplusmi]: *Management Interface for SFP+* SFF-8472\n[^sfpplusstandard]: *Enhanced Small Form Factor Pluggable Module SFP+* SFF-8431\n[^fibrechannel]: *FC-PH Fibre Channel Physical Interface* INCITS 230-1994\n[^ethernet]: *Ethernet Specification* IEEE-802.3\n[^rgmii]: *Reduced Gigabit Media Independent Interface (RGMII) standard* https://web.archive.org/web/20160303212629/http://www.hp.com/rnd/pdfs/RGMIIv1_3.pdf\n[^qsgmii]: *CISCO EDCS-540123 QSGMII Specification* https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/powerquicc/3546/1/qsgmii%20specification.pdf\n[^sgmii]: *CISCO ENG-46158 Serial-GMII Specification* https://archive.org/details/sgmii/page/n5/mode/2up\n[^altium]: Peterson Z. *Decoding Media Independent Interface (MII) in Ethernet Links*, Altium Limited https://resources.altium.com/p/decoding-media-independent-interface-mii-ethernet-links\n[^continental]: Hopf D. *High-Speed Interfaces for High-Performance Computing*, Continental AG https://standards.ieee.org/wp-content/uploads/import/documents/other/eipatd-presentations/2020/D1-02-Hopf-HighSpeed-Interfaces-for-HighPerformance-Computing.pdf\n[^intel]: *L- and H-Tile Transceiver PHY User Guide*, Intel https://www.intel.com/content/www/us/en/docs/programmable/683621/current/the-xgmii-interface-scheme-in-10gbase-r.html\n[^10gbasecx4]: *Physical Coding Sublayer (PCS) and Physical Medium Attachment (PMA) sublayer, type 10GBASE-X* https://www.ieee802.org/3/ak/public/jan03/WPcls48_1_0.pdf\n[^aquantia]: *AQR405 10GBASE-T Ethernet PHY Transceiver* https://www.verical.com/datasheet/aquantia-corp.-phy-aqr405-b1-eg-y-3825278.pdf\n[^xilinx]: *USXGMII Ethernet Subsystem v1.2* https://www.xilinx.com/content/dam/xilinx/support/documents/ip_documentation/usxgmii/v1_2/pg251-usxgmii.pdf\n"
  },
  {
    "path": "_sfp_cage/banana-pi.md",
    "content": "---\ntitle: Banana Pi\nhas_children: false\nlayout: default\n---\n\n# Hardware Specifications\n\n|              | BPI-R3               | BPI-R4               | BPI-R4 var           |\n| ------------ | -------------------- | -------------------- | -------------------- |\n| Vendor       | Banana Pi            | Banana Pi            |                      |\n| Model        | BPI-R3               | BPI-R4               |                      |\n| SoC          | MT7986 (filogic 830) | MT7988 (filogic 880) | MT7988 (filogic 880) |\n| SFP          | 2x SFP 2.5 GbE       | 2x SFP 10 GbE        | 1x SFP 10 GbE        |\n| Ethernet     | 5x GbE               | 4x GbE               | 4x GbE + 1 2.5 GbE   |\n| USXGMII      | No                   | ✅                   | ✅                   |\n| 2500Base-X   | ✅                   | ✅                   | ✅                   |\n| SGMII        | ✅                   | ✅                   | ✅                   |\n| Type         | Router               | Router               | Router               |\n\n# Notes\n## SFP power behavior on the Banana Pi R4  \nUnlike some devices, the Banana Pi R4 does not apply 3.3 V to the SFP cage immediately when a module is inserted.  \nInstead, the board uses a load-switch MOSFET which only enables power once the module asserts the MOD_DEF0 pin (the presence/ID signal defined in the SFP specification).  \nThis design can cause problems with “smart” GPON sticks such as the Zyxel PMG3000-D20B.  \nThe stick’s internal SoC requires a long time to boot before, and only then it pulls MOD_DEF0 low.  \nBecause the R4 waits for MOD_DEF0 before supplying power, the stick never receives power at all, resulting in a deadlock where the module stays unpowered.\n  \nSome users in the BPI-R4 forums discussed a [workaround](https://forum.banana-pi.org/t/bpi-r4-zyxel-pmg3000-d20b-sfp-module-not-detected/18413/2) which bypasses the load-switch and feeds 3.3 V directly to the cage.  \nThis allows modules like the PMG3000-D20B to start, but at the cost of losing proper hot-plug behavior.  \n  \nFS.com also offers GPON ONU sticks advertised as “with MAC,” which reportedly assert MOD_DEF0 early and may therefore avoid the issue without hardware modification.  \nHowever, evaluation of these modules on the R4 is still outstanding.\n\n"
  },
  {
    "path": "_sfp_cage/broadcom-57810s.md",
    "content": "---\ntitle: Broadcom 57810S\nhas_children: false\nalias: HPE 530SFP+, DELL N20KJ\nlayout: default\n---\n\n# Hardware Specifications\n\n|        |                      |\n| ------ | -------------------- |\n| Vendor | Broadcom             |\n| Model  | 57810S               |\n| SFP    | 2 SFP+               |\n| XGMII  | ✅                   |\n| HSGMII | ✅                   |\n| SGMII  | ✅                   |\n| Type   | PCI express SFP card |\n\nIn order for the card to be able to sync at 2.5G speeds, the kernel's bnx2x module has to be patched. The easiest way to do so is via DKMS which rebuilds that module only:\n\n- [DKMS for Linux 6.0.y](https://github.com/darkbasic/bnx2x-2_5g-dkms/tree/6.0.y)\n\nIt also adds a module option that can be set to disable SFP TX fault detection, otherwise the SFP mini-ONT will not be accessible if serial output to SFP is enabled. Alternatively the serial interface can be disabled on the SFP module.\n\nUnfortunately, despite the patches, UEFI eDiag still has to be used to unlock 2.5G capabilities:\n\n- [How-to enable 2.5G capability via UEFI eDiag](https://www.dslreports.com/forum/r32230041-Internet-Bypassing-the-HH3K-up-to-2-5Gbps-using-a-BCM57810S-NIC)\n\nAt this point, use the following command to set the speed to 2.5G:\n```\nsudo ethtool -s your_network_interface autoneg off speed 2500 duplex full\n```\n\n# Compatibility\n\n{% include alert.html content=\"This card requires a solder mod in order to work with some SFP ONTs.\" alert=\"Note\"  icon=\"svg-warning\" color=\"yellow\" %}\n\nAccording to a [blog post](https://rsaxvc.net/blog/2020/8/15/Nokia_G-010S-A_Pin_6_Issue.html), some manufacturers designed their SFP ONTs in a way that doesn't 100% comply with the SFF specification. A solder mod like described in a [dslreports thread](https://www.dslreports.com/forum/r32529545-) might be required to get certain SFP modules to work with this card. This mod grounds `MOD_ABS PIN (6)`, which signals to the card that a module is inserted in the slot. This signals the card to send power to the SFP module.\n\n## Affected SFP Modules\n\n- [Zyxel PMG3000-D20B](/ont-zyxel-pmg3000-d20b) (see Github issue discussion linked below)\n- [Nokia G-010S-A](/ont-nokia-g-010s-a)\n\n# Miscellaneous Links\n- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)\n- [Solder mod required to make some SFP ONTs work with this card](https://github.com/xvzf/zyxel-gpon-sfp/issues/10)\n"
  },
  {
    "path": "_sfp_cage/digitus-10gbps-dn-82211.md",
    "content": "---\ntitle: DIGITUS 10Gbps DN-82211\nhas_children: false\nalias:\nlayout: default\n---\n\n# Hardware Specifications\n\n|          |                              |\n| -------- | ---------------------------- |\n| Vendor   | DIGITUS                      |\n| Model    | 10Gbps DN-82211              |\n| SFP      | 1 SFP+                       |\n| Ethernet | 1 10GbE Multigig             |\n| XGMII    | ✅ (only if eth is 10 Gbps)  |\n| HSGMII   | ✅ (only if eth is 2.5 Gbps) |\n| SGMII    | ✅ (only if eth is 1 Gbps)   |\n| Type     | Media Converter              |\n\n- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)\n"
  },
  {
    "path": "_sfp_cage/fiberethernet-media-converter-2.5.md",
    "content": "---\ntitle: FiberEthernet Media Converter 2.5 \nhas_children: false\nlayout: default\n---\n\n# Hardware Specifications\n\n|          |                               |\n| -------- | ----------------------------- |\n| Vendor   | FiberEthernet                 |\n| Model    | Media Converter 2.5 (Realtek) |\n| SFP      | 1 2.5 SFP                     |\n| Ethernet | 1 2.5GbE                      |\n| XGMII    | No                            |\n| HSGMII   | ✅ (only if eth is 2.5 Gbps)  |\n| SGMII    | ✅ (only if eth is 1 Gbps)    |\n| Type     | Media Converter               |\n\n{% include image.html file=\"mc-2.5-schemas.png\" alt=\"MC 2.5 Schematic diagram of functionality\" caption=\"MC 2.5 Schematic diagram of functionality\" %}\n{% include image.html file=\"mc-2.5-tetris.png\" alt=\"MC 2.5 in operation\" caption=\"MC 2.5 in operation\" %}\n\n\n\n\n- [2.5G Fiber Optic Media Converter Gigabit SFP Transceiver 1000Mbps Compatible With Common E/GPON](https://aliexpress.com/item/1005004340369253.html)\n"
  },
  {
    "path": "_sfp_cage/macchiatobin.md",
    "content": "---\ntitle: MACCHIATObin\nhas_children: false\nalias: Single Slot, Dual Shot\nlayout: default\n---\n\n# Hardware Specifications\n\n|          |                                                       |\n| -------- | ----------------------------------------------------- |\n| Vendor   | MACCHIATObin                                          |\n| Model    | Single Slot, Dual Shot                                |\n| SoC      | Marvell ARMADA 8040                                   |\n| SFP      | 2 SFP+, 1 SFP 2.5 [^xor]                              |\n| Ethernet | 2 10GbE Multigig, 1 2.5GbE (only on Dual Shot [^xor]) |\n| XGMII    | ✅                                                    |\n| HSGMII   | ✅                                                    |\n| SGMII    | ✅                                                    |\n| Type     | Router                                                |\n\n\n- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)\n- [MACCHIATObin](http://macchiatobin.net/)\n\n<hr>\n\n[^xor]: In the Dual Shot model the RJ45 and the SFP are in XOR, i.e. either one or the other is usable, not both at the same time."
  },
  {
    "path": "_sfp_cage/mikrotik.md",
    "content": "---\ntitle: MikroTik\nhas_children: false\nlayout: default\n---\n\n# Hardware Specifications\n\n|          | RB5009          | CRS305-1G-4S+IN | CCR2004-1G-12S+2XS | CCR2116-12G-4S+ |\n| -------- | --------------- | --------------- | ------------------ | --------------- |\n| Vendor   | MikroTik        | Mikrotik        | Mikrotik           | Mikrotik        |\n| Model    | RB5009          | CRS305-1G-4S+IN | CCR2004-1G-12S+2XS | CCR2116-12G-4S+ |\n| SFP      | 1 SFP+          | 4 SFP+          | 12 SFP+, 2 SFP28   | 4 SFP+          |\n| Ethernet | 1 2.5GbE, 7 GbE | 1 GbE           | 1 GbE              | 13 GbE          |\n| XGMII    | ✅              | ✅              | ✅                 | ✅              |\n| HSGMII   | ✅              | ✅              | ✅                 | ✅              |\n| SGMII    | ✅              | ✅              | ✅                 | ✅              |\n| Type     | Router          | Switch          | Router             | Router          |\n\nNote that Mikrotik RouterOS before 7.15beta4 requires the fiber to be plugged before allowing ping/telnet/webGUI to the xPON SFP.\nThis will trigger an alarm on the OLT at least on the first config.\nIt is suggested upgrade to 7.15 and activate \"Interface/SFP/Ignore Rx LOS\", or use a media converter for the first config.\n\n# CRS305-1G-4S+IN\n\n## Bridge Mode\n\nBridge mode allows full HSGMII speed without any major issues and seems to work in mixed mode too.\n\nPositive results in mixed mode with the following hardware:\n\n|                                                                         | Huawei MA5671A |\n| ----------------------------------------------------------------------- | -------------- |\n| [6COM 6C-SFP-10G-T-Intel](https://www.amazon.it/gp/product/B07H9Q91WV/) | ✅             |\n\nIn any case, the use of a DAC or MikroTik S+RJ10 is always recommended.\n\n\n## Router Mode\n\nUnfortunately the CPU will have a major impact on end performance with resulting downlink speed topping at ~700Mbps.\n\nNote that when using **Huawei MA5671A with right.com.cn firmware** on a Fastweb Italy IPoE connection you may run into some issues since no VLANs are used. The ONT responds to DHCP requests with **a 802.1Q tag for VLAN 0**, which should be handled by properly bridging the WAN as well. Other providers that do rely on VLANs such as 835 won't probably need to resort to the this workaround.\n\n- [2.5Gb Compatibility](https://github.com/Anime4000/RTL960x/blob/main/Docs/2.5Gb.md)\n- [CRS305 Fastweb Italy SFP Router Mode](https://pastebin.com/zRaidTx4)\n- [@stich86 tweaks](https://github.com/Anime4000/RTL960x/issues/17#issuecomment-1101435506)\n- [Mikrotik changelogs](https://mikrotik.com/download/changelogs)\n"
  },
  {
    "path": "_sfp_cage/tp-link.md",
    "content": "---\ntitle: TP-Link \nhas_children: false\nlayout: default\n---\n\n\n# Hardware Specifications\n\n|          | TL-XDR5480 | TL-ER2260T -- |\n| -------- | ---------- | ------------- |\n| Vendor   | TP-Link    | TP-Link       |\n| Model    | TL-XDR5480 | TL-ER2260T    |\n| SFP      | 1 SFP 2.5  | 2 SFP+        |\n| Ethernet | 4 2.5GbE   | 4 GbE         |\n| XGMII    | No         | ✅            |\n| HSGMII   | ✅         | ✅            |\n| SGMII    | ✅         | ✅            |\n| Type     | Router     | VPN Router    |\n\n\n- [2.5Gb Compatibility](https://github.com/Anime4000/RTL960x/blob/main/Docs/2.5Gb.md)\n"
  },
  {
    "path": "_sfp_cage/turris.md",
    "content": "---\ntitle: Turris\nhas_children: false\nlayout: default\n---\n\n# Hardware Specifications\n\n|          | Omnia         | Mox                                 |\n| -------- | ------------- | ----------------------------------- |\n| Vendor   | Turris        | Turris                              |\n| Model    | Omnia         | Mox                                 |\n| SFP      | 1 SFP 2.5 GbE | 1 SFP 2.5 GbE (need Mox D)          |\n| Ethernet | 5 GbE         | 1 + (4 × #Mox B) + (8 × #Mox E) GbE |\n| XGMII    | No            | No                                  |\n| HSGMII   | ✅            | ✅                                  |\n| SGMII    | ✅            | ✅                                  |\n| Type     | Router        | Router                              |\n\n\nAs the (Turris Forum)[https://forum.turris.cz/t/ma5671a-sfp-issues-on-turris-os-5-0-3/13443] reports, the following SFPs are known to work:\n- Huawei MA5671A (Original Firmware)\n- Nokia Alcatel G-010S-A (2.5 Gbps)\n- ODI ZTE DFP-34G-2C2 (1 Gbps)\n- ODI Realtek DFP-34G-2C2\n- ODI Realtek DFP-34X-2C2\n- Technicolor AFM0002 (1 Gbps)\n- HALNy HL-GSFP[^2min]\n- Zisa OP151S[^2min]\n- Zyxel PMG3000-D20B[^2min]\n\nIn ONTs that expose the serial port on SFP it must be activated, otherwise the Turris sees a TX Fault.\n\n\n<hr>\n\n[^2min]: Turris doesnt recognize it and doesn't change to SFP interface cold boot issue you need to wait 2 min and the reboot Turris.\n\n"
  },
  {
    "path": "_sfp_cage/ubiquiti.md",
    "content": "---\ntitle: Ubiquiti\nhas_children: false\nalias: EdgeSwitch ES-16-XG, UniFi US-16-XG, UniFi US-XG-6POE\nlayout: default\n---\n\n# Hardware Specifications\n\n|          | EdgeSwitch ES-16-XG   | UniFi US-16-XG        | UniFi US-XG-6POE |\n| -------- | --------------------- | --------------------- | ---------------- |\n| Vendor   | Ubiquiti              | Ubiquiti              | Ubiquiti         |\n| Model    | EdgeSwitch ES-16-XG   | UniFi US-16-XG        | UniFi US-XG-6POE |\n| SFP      | 12                    | 16                    | 2 SFP+           |\n| Ethernet | 4 10GbE (No Multigig) | 4 10GbE (No Multigig) | 4 10GbE          |\n| XGMII    | ✅                    | ✅                    | ✅               |\n| HSGMII   | ✅                    | ✅                    | ✅               |\n| SGMII    | ✅                    | ✅                    | ✅               |\n| Type     | Switch                | Switch                | Switch           |\n\n\n- [Come avere i 2.5 Gbps su un unico dispositivo senza il Fastgate](https://forum.fibra.click/d/17836-come-avere-i-25-gbps-su-un-unico-dispositivo-senza-il-fastgate)"
  },
  {
    "path": "_sfp_cage/zte.md",
    "content": "---\ntitle: ZTE\nhas_children: false\nlayout: default\n---\n\n# Hardware Specifications\n\n|          | H6645P                                             |\n| -------- | -------------------------------------------------- |\n| Vendor   | ZTE                                                |\n| Model    | H6645P                                             |\n| SoC      | ZXIC ZX279132C                                     |\n| SFP      | 1 2.5 GbE [^xor]                                   |\n| Ethernet | 3 1GbE, 1 2.5GbE LAN port, 1 2.5GbE WAN port[^xor] |\n| XGMII    | No                                                 |\n| HSGMII   |                                                    |\n| SGMII    | ✅                                                 |\n| Type     | Router                                             |\n\n\n<hr>\n\n[^xor]: the WAN Eth and WAN SFP ports are in XOR, i.e. either one or the other.\n"
  },
  {
    "path": "_sfp_cage/zyxel.md",
    "content": "---\ntitle: Zyxel\nhas_children: false\nalias: EX5601-T0\nlayout: default\n---\n\n# Hardware Specifications\n\n|          | EX5601-T0                                |\n| -------- | ---------------------------------------- |\n| Vendor   | Zyxel                                    |\n| Model    | EX5601-T0                                |\n| SoC      | MT7986a (filogic 830)                    |\n| Ram      | 1G                                       |\n| SFP      | 1 2.5 GbE [^xor]                         |\n| Ethernet | 3 1GbE, 1 2.5GbE LAN, 1 2.5GbE WAN[^xor] |\n| XGMII    | No                                       |\n| HSGMII   | ✅                                       |\n| SGMII    | ✅                                       |\n| Type     | Router                                   |\n\n# Zyxel EX5601-T0\n## List of partitions\n\n| dev  | size     | erasesize | name         |\n| ---- | -------- | --------- | ------------ |\n| mtd0 | 20000000 | 00040000  | \"spi0.1\"     |\n| mtd1 | 00100000 | 00040000  | \"BL2\"        |\n| mtd2 | 00080000 | 00040000  | \"u-boot-env\" |\n| mtd3 | 00200000 | 00040000  | \"Factory\"    |\n| mtd4 | 001c0000 | 00040000  | \"FIP\"        |\n| mtd5 | 00040000 | 00040000  | \"zloader\"    |\n| mtd6 | 04000000 | 00040000  | \"ubi\"        |\n| mtd7 | 04000000 | 00040000  | \"ubi2\"       |\n| mtd8 | 15a80000 | 00040000  | \"zyubi\"      |\n\nThis router supports dual boot, and has two partitions for the firmware, `ubi` and `ubi2`.\n\nTo check the current active partition you can use the following command:\n```sh\ncat /proc/cmdline\n```\nThe result will be something like the following:\n```\nconsole=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 rootubi=ubi\n```\nIf `rootubi=ubi`, the active partition is `mtd6`.\n\nIf `rootubi=ubi2`, the active partition is `mtd7`.\n\n{% include alert.html content=\"When you flash a new firmware via the web interface the router will automatically write the new firmware in the inactive partition, hence if the firmware upgrade is successfull it will automatically swap the boot partition at next reboot. If everything is ok you don't have to manually swap partitions\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n## Serial interface\n\nThis router has the serial interface pins directly accessible on the board:\n\n{% include image.html file=\"zyxel-ex5601t0\\zyxel_ex5601t0_serial.jpg\" alt=\"EX5601T0 Serial interface\" caption=\"EX5601T0 Serial interface\" %}\n\nThe serial console speed is 115200 bauds.\n\n## ZHAL (Zloader) access\n\nThe boot process of this router has multiple stages, long story short we have both u-boot and zloader (ZHAL).\n\nWhen the router is powered-up u-boot is loaded and it will load zloader, the Zyxel proprietary boot manager.\n\nZloader allows to manually swap boot partitions (`ubi` and `ubi2`), recover the supervisor password and many additional useful (and dangerous) things.\n\nBy default zloader access is blocked.\n\n### Unlocking zloader \n\n{% include alert.html content=\"The following procedure is provided as-is, if you damage the device this community is not responsibile for any damage in any way.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n1. Open the router case and connect your usb-ttl adapter to the router as show in the picture.\n2. Open putty or any other serial capable software and configure it to use your COMX port with 115200 speed.\n3. Power up the router.\n4. While the router is booting at some point you will read the following: `Please press Enter to activate this console.`\n5. As soon as you read that press enter, type root and than press enter again (just do it, don't care about the logs scrolling).\n6. Most likely the router is still printing the boot log, leave it boot until it stops.\n7. If everything went ok you should have full root access: \n```\nroot@EX5601-T0:/#\n```\n8. type the following command and press enter:\n```\nfw_setenv EngDebugFlag 0x1\n```\n9. Reboot the router.\n10. As soon as you read `Hit any key to stop autoboot:` press Enter.\n11. If everything went ok you should have the following prompt:\n```\nZHAL>\n```\nYou have successfully unlocked zloader access, this procedure must be done only once.\n\n{% include alert.html content=\"There is an alternative procedure to achieve the same end result. Flashing the firmware which gives you root access via ssh and you give the same fw_setenv command from point 8. The USB to serial adapter is still needed to access ZHAL\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n\n### Dumping supervisor password\n{% include alert.html content=\"The following procedure is provided as-is, if you damage the device this community is not responsibile for any damage in any way.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"The supervisor user is the most powerful user that can be used from the web interface. The supervisor password is written in the nand and it's encrypted. To dump the password you must first complete the **Unlocking zloader** procedure\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n1. Open the router case and connect your usb to serial adapter.\n2. Open putty or any other serial capable software and configure it to use your COMX port with 115200 speed.\n3. Power up the router.\n4. As soon as you read `Hit any key to stop autoboot:` press Enter.\n5. Type the following command and press enter to read the supervisor password:\n```\natck\n```\n6. The supervisor password will be printed in clear text and can be used on the zyxel webgui.\n7. You can reboot the router by typing the following command and press Enter:\n```\natsr\n```\n\n### Manually swapping the boot partition\n\n{% include alert.html content=\"The following procedure is provided as-is, if you damage the device this community is not responsibile for any damage in any way.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"To swap the boot partition you first have to complete the **Unlocking zloader** procedure\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n1. Open the router case and connect your usb to serial adapter.\n2. Open putty or any other serial capable software and configure it to use your COMX port with 115200 speed.\n3. Power up the router.\n4. As soon as you read `Hit any key to stop autoboot:` press Enter.\n5. Type the following command sequence to swap the boot partition.\n```sh\natbt 1  # unlock zhal write \natsw    # swap boot partition\natsr    # reboot the router\n```\n6. The router will boot from the new active partition (ubi or ubi2 depending on the previous active partition).\n7. Check if the active partition has changed with the following command:\n```sh\ncat /proc/cmdline\n```\n\n## Unlocking u-boot access\n{% include alert.html content=\"The following procedure is provided as-is, if you damage the device this community is not responsibile for any damage in any way.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"To unlock u-boot access you first have to complete the **Unlocking zloader** procedure\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n{% include alert.html content=\"Having full u-boot access can be very dangerous, with great power comes great responsibility.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\nUp to today a strange combination of actions must be completed in a special sequence to access the u-boot CLI:\n\n1. Open the router case and connect your usb to serial adapter.\n2. Open putty or any other serial capable software and configure it to use your COMX port with 115200 speed.\n3. Power up the router.\n4. As soon as you read `Hit any key to stop autoboot:` press Enter to access the ZHAL command line.\n5. Type the following command and press enter:\n```\natgu\n```\n6. Apparently that command doesn't do anything and the router will reboot itself.\n7. Again for the second time you will read `Hit any key to stop autoboot:`, press Enter again to access ZHAL again.\n8. Type the following command again and press enter:\n```\natgu\n```\n9. You should now have entered the u-boot command line interface:\n```\nMT7986>\n```\n\n## Flashing a firmware or downgrading firmware\n\n{% include alert.html content=\"The following procedure is provided as-is and if anything goes wrong you will likely need to open the router case and attach a USB serial adapter to the router to recover it.\nThis community is not responsible of any damage you cause by following these procedures.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n1. Access the router via ssh or telnet with admin user (admin password is printed on the back of the router).\n2. Disable firmware version check and model check by running the following commands.\n```\nzycli fwidcheck off\nzycli modelcheck off\n```\n3. You can close the ssh console, do not reboot the router.\n4. Open the router web interface and in the maintenance/firmware upgrade section select the \"Restore Default Settings After Firmware Upgrade\" option.\n5. Select \"Choose file\" to select the firmware file you want to upload and click Upload.\n6. The router will automatically reboot and should get back up on 192.168.1.1\n\n## Firmware Version V5.70(ACDZ.0)C0 no-brand\n\nHere is a no-brand firmware compiled starting from Zyxel provided OpenSource package under GPL license (link at the bottom of this page) plus the following modifications that you can track on the following repo:\nhttps://github.com/pameruoso/zyxel-ex5601t0\n\n1. Added start-up script to reset and enable root access via ssh.\nThe script reads the device serial number and resets the root password with that. Do not try to reset the root password because that will last until next reboot.\n2. the `/bin` path contains `sfp_wan.sh_wind` and `check_sfp_link.sh_wind` scripts which are very similar to the standard `sfp_wan.sh` and `check_sfp_link.sh` scripts. If everything works with the original ones do not swap them. If you want to allow 2.5gbit HSGMII with the Technicolor AFM0003 SFP stick you need to swap and enable the `_wind` scripts.\n3. Additional packages installed: `mtr`, `htop`, `openvpn`, `wireguard`.\n\n{% include alert.html content=\"The OpenVPN and Wireguard functionalities will not be directly usable in the Zyxel web interface, they are not supported. If you want to setup a VPN with either protocol you must know how to use the command-line and do your own setup\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\n{% include alert.html content=\"Do not try to install packages directly from the internet with opkg update/install, the default repositories are not working and, if you edit them, you'll most likely end up breaking the partition overlay\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\n- [Firmware Version V5.70(ACDZ.0)C0_no-brand_pa_0.1](https://mega.nz/file/OJxBCKqR#z31OiJwY6_iaDtj_yrOTrx1oKnFEdnm4Rh0pi3wRtoE)\n\n## OpenWrt firmware\nThis router has native OpenWrt support starting from the following [git commit](https://github.com/openwrt/openwrt/pull/12580/commits/1c05388ab04c934ec240e8362321908f91381a90)\n\nYou are free to clone the git code and build your own OpenWrt firmware or use the OpenWrt firmware builder.\n\n{% include alert.html content=\"Carefully read the installation instructions from the git commit link above!\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\nThe OpenWrt firmware has the following working features out of the box:\n- 3 Gbit LAN ports\n- Wi-Fi AX6000: 5Ghz 4x4 ax + 2.4GHz 4x4 ax\n- Zyxel partitioning for coexistance with Zloader and dual boot\n- Leds\n- Reset button\n- Serial interface\n- USB port\n- LAN RJ45 2.5 Gbit port\n- WAN RJ45 2.5 Gbit port\n- WAN SFP port only works after exporting pins 57 and 10 (`gpiobase411`). There must also be a cable with a link active on the WAN 2.5 Gbe port to make the SFP work. This is due to missing support into the phy-link code of the Mediatek ethernet SoC.\n\nTo workaround the missing phy-link support, some modifications to the DTS are needed. Setting the `gmac1` node to fixed link 2500Base-X gives the possibility to hot-swap the SFP/RJ45 port.\n\nThe following repo contains a proper example: [EX5601-T0 fixed SFP link git repo](https://github.com/pameruoso/openwrt-ex5601t0-porting/tree/ex5601-t0-fixedlink) you can apply the [patch](https://github.com/openwrt/openwrt/compare/main...pameruoso:openwrt-ex5601t0-porting:ex5601-t0-fixedlink.patch) to the official OpenWrt repo.\n\n{% include alert.html content=\"It is highly recommended to use the OpenWrt official builds instead of this fork because the latter is not updated that often, still if you want to use the SFP you can insert it into a media converter and use the 2.5Gbe RJ45 port with the official build.\" alert=\"Info\" icon=\"svg-info\" color=\"blue\" %}\n\nHere is a flashable bin file based on OpenWrt v23.05.0 Stable with the mod to swap SFP/RJ45. This `sysupgrade.bin` already contains the zyfwinfo file for flashing with zloader.\n\n[EX5601-T0_Openwrt-v23.05.0-stable_fixedlink](https://mega.nz/file/acgy1I7b#oZ4twW1lN7ujGh0lp4bk68I8zczCscJq0vSSVcv5cXQ)\n\n# Miscellaneous Links\n\n- [Zyxel EX5601-T0 source GPL package V5.70(ACDZ.0)C0](https://github.com/ErnyTech/zyxel-ex5601t0)\n\n- [Rollback SFP Zyxel con il W3 HUB per risolvere il problema dell'upload cappato](https://forum.fibra.click/d/36541-rollback-sfp-zyxel-con-il-w3-hub-per-risolvere-il-problema-dellupload-cappato)\n\n\n<hr>\n\n[^xor]: the Ethernet and SFP WAN ports are in XOR, i.e. either one or the other is usable, not both at the same time.\n"
  },
  {
    "path": "_tools/ascii-hex.md",
    "content": "---\ntitle: ASCII and Hex converter\nhas_children: false\nnav_order: 1\ndescription: Tool for converting between ASCII and Hex\nlayout: default\n---\n\n<h1>ASCII To Hex</h1>\n<form id=\"ascii-to-hex\" novalidate>\n    <div class=\"form-floating mb-3\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"ASCII\" name=\"ascii-to-hex\" id=\"ascii-to-hex\" required>\n        <label for=\"ascii-to-hex\">ASCII</label>\n        <div class=\"invalid-feedback\">\n            Please provide a valid text input.\n        </div>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"Glue\" name=\"ascii-to-hex-glue\" id=\"ascii-to-hex-glue\" value=\" \">\n        <label for=\"ascii-to-hex-glue\">Glue/Separator (empty for the format 0x0123456789ABCDE, ` ` for the format 0x01 0x23 0x45 0x67 0x89 0xAB 0xCD 0xEF)</label>\n    </div>\n    <div class=\"mb-3\">\n        <input type=\"submit\" class=\"btn btn-primary\" value=\"Calculate!\">\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input readonly class=\"form-control\" type=\"text\" id=\"hex-result\" placeholder=\"HEX Result\">\n        <label for=\"hex-result\">HEX Result</label>\n    </div>\n</form>\n<h1>Hex To ASCII</h1>\n<form id=\"hex-to-ascii\" novalidate>\n    <div class=\"form-floating mb-3\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"HEX\" name=\"hex-to-ascii\" id=\"hex-to-ascii\" required>\n        <label for=\"hex-to-ascii\">HEX</label>\n        <div class=\"invalid-feedback\">\n            Please provide a valid text input.\n        </div>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"Separator\" name=\"hex-to-ascii-separator\" id=\"hex-to-ascii-separator\" value=\" \">\n        <label for=\"hex-to-ascii-separator\">Glue/Separator (empty for the format 0x0123456789ABCDEF, ` ` for the format 0x01 0x23 0x45 0x67 0x89 0xAB 0xCD 0xEF)</label>\n    </div>\n    <div class=\"mb-3\">\n        <input type=\"submit\" class=\"btn btn-primary\" value=\"Calculate!\">\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input readonly class=\"form-control\" type=\"text\" id=\"ascii-result\" placeholder=\"ASCII Result\">\n        <label for=\"ascii-result\">ASCII Result</label>\n    </div>\n</form>\n  \n<script>\n\n    function getChunks(s, i) {\n        var a = [];\n        do{ a.push(s.substring(0, i)) }  while( (s = s.substring(i)) != \"\" );\n        return a;\n    }\n\n    var asciiToHexForm = document.getElementById('ascii-to-hex');\n    asciiToHexForm.addEventListener('submit',(event) => {\n        if (!asciiToHexForm.checkValidity()) {\n            event.preventDefault();\n            [...asciiToHexForm.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        } else {\n            event.preventDefault();\n            [...hexToAsciiForm.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', false));\n            var fomrdata = new FormData(asciiToHexForm);\n            var str = fomrdata.get('ascii-to-hex');\n            var glue = fomrdata.get('ascii-to-hex-glue');\n            var prefixi = glue !== \"\" ? \"0x\" : \"\";\n            var prefix = glue === \"\" ? \"0x\" : \"\";\n            var hex = prefix + ([...str].map((elem, n) => prefixi+Number(str.charCodeAt(n)).toString(16)).join(glue));\n            document.getElementById('hex-result').value = hex;\n        }\n    });\n\n    var hexToAsciiForm = document.getElementById('hex-to-ascii');\n    hexToAsciiForm.addEventListener('submit',(event) => {\n        if (!hexToAsciiForm.checkValidity()) {\n            event.preventDefault();\n            [...hexToAsciiForm.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        } else {\n            event.preventDefault();\n            [...hexToAsciiForm.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', false));\n            var fomrdata = new FormData(hexToAsciiForm);\n            var str = fomrdata.get('hex-to-ascii');\n            var separator = fomrdata.get('hex-to-ascii-separator');\n            var ascii = separator === \"\" ? getChunks(str.substring(2),2).map(el => String.fromCharCode(parseInt(el, 16))).join('') : str.split(separator).map(el => String.fromCharCode(Number(el))).join('');\n            document.getElementById('ascii-result').value = ascii;\n        }\n        \n    });\n    \n</script>\n"
  },
  {
    "path": "_tools/gpon-omci-vlan-parser.md",
    "content": "---\ntitle: GPON OMCI VLAN Table parser\nhas_children: false\ndescription: Tool for parsing the GPON OMCI VLAN Table (ME 171)\nlayout: default\n---\n\n<h1>VLAN TABLE PARSER</h1>\n<form id=\"vlan-table-parser\" novalidate>\n    <div class=\"form-floating mb-3\">\n        <input type=\"text\" class=\"form-control\" placeholder=\"VLAN TABLE in HEX\" name=\"vlan-table-hex\" id=\"vlan-table-hex\" required>\n        <label for=\"vlan-table-hex\">VLAN TABLE in HEX</label>\n        <div class=\"invalid-feedback\">\n            Please provide a valid text input.\n        </div>\n    </div>\n    <div class=\"mb-3\">\n        <input type=\"submit\" class=\"btn btn-primary\" value=\"Decode!\">\n    </div>\n    <div class=\"form-floating mb-3\" id=\"to-place-table\"></div>\n</form>\n\n<script type=\"text/javascript\" src=\"/assets/js/omci-vlan.js\"></script>\n<script>          \n    function fillVlanTable(table, vlanTableRule) {\n        const tableNames = [\"Filter outer priority\",\n                            \"Filter outer VID\",\n                            \"Filter outer TPID\",\n                            \"Filter inner priority\",\n                            \"Filter inner VID\",\n                            \"Filter inner TPID\",\n                            \"Filter ether type\",\n                            \"Treatment tags to remove\",\n                            \"Treatment outer priority\",\n                            \"Treatment outer VID\",\n                            \"Treatment outer TPID\",\n                            \"Treatment inner priority\",\n                            \"Treatment inner VID\",\n                            \"Treatment inner TPID\"];\n\n    \n        for (var j = 0; j < 14; j++) {\n            var row = table.insertRow(j);\n            var cell1 = row.insertCell(0);\n            var cell2 = row.insertCell(1);\n            \n            cell1.innerHTML = tableNames[j];\n            cell2.innerHTML = vlanTableRule[j];\n        }\n    }\n    \n    function makeVlanTables(formToPlaceTable, vlanTable) {\n        for (const vlanRule of vlanTable) {\n            var div = document.createElement('div');\n            div.classList = \"table-wrapper\";\n            var table = document.createElement('table');\n            div.appendChild(table);\n            fillVlanTable(table, vlanRule);\n            formToPlaceTable.appendChild(div);\n        }\n    }\n            \n    var vlanTableForm = document.getElementById('vlan-table-parser');\n    vlanTableForm.addEventListener('submit',(event) => {\n        if (!vlanTableForm.checkValidity()) {\n            event.preventDefault();\n            [...vlanTableForm.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        } else {\n            event.preventDefault();\n            [...vlanTableForm.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', false));\n            var fomrdata = new FormData(vlanTableForm);\n            const hexString = fomrdata.get('vlan-table-hex');\n            const vlanTable = vlanTableParse(hexString);\n            const formToPlaceTable = document.getElementById('to-place-table');\n            formToPlaceTable.innerHTML = '';\n            makeVlanTables(formToPlaceTable, vlanTable);\n        }\n    });\n</script>\n"
  },
  {
    "path": "_tools/molex-ont.md",
    "content": "---\ntitle: Molex ONT\nhas_children: false\nnav_order: 3\nlayout: default\n---\n\nIn some sticks, such as those based on Lantiq chipsets, the serial interface is exposed in the upper pins of the ONT, in order to read them there are two possibilities:\n- the use of an SFP molex ([farnell](https://it.farnell.com/en-IT/molex/74441-0001/connector-sfp-rcpt-20pos-smt/dp/2112385)) to which four wires are to be soldered and the other pins removed. This makes the adapter compatible with a single serial combination.\n- the use of a board to which the SFP molex is soldered, exposing the main SFP pins.\n\n{% include image.html file=\"ma5671a-root-1.jpg\"  alt=\"Example of how the SFP-TTL adapter is to be connected\" caption=\"Example of how the SFP-TTL adapter is to be connected\" %}\n\n{% include image.html file=\"new-root-procedure/board-molex-arduino.jpg\"  alt=\"Example of how the SFP-TTL adapter is to be used with a custom board\" caption=\"Example of how the SFP-TTL adapter is to be used with a custom board\" %}\n\nIf you want to make your own board, here are some ideas:\n\n{% include image.html file=\"board-dupont/top.svg\"  alt=\"Example of an SFP-TTL custom board\" caption=\"Example of an SFP-TTL custom board\" %}\n{% include image.html file=\"board-dupont/bottom.svg\"  alt=\"Example of an SFP-TTL custom board\" caption=\"Example of an SFP-TTL custom board\" %}\n\nthe components to be soldered are instead:\n- 1x MOLEX SFP (like Molex-744410001 [lcsc](https://www.lcsc.com/product-detail/Card-Edge-Connectors_MOLEX-744410001_C277615.html), [farnell](https://it.farnell.com/en-IT/molex/74441-0001/connector-sfp-rcpt-20pos-smt/dp/2112385))\n- 2x pinout 2x10 (like [MINTRON MTP125-1210S1](https://www.lcsc.com/product-detail/Pin-Header-Female-Header_MINTRON-MTP125-1210S1_C358699.html))\n\n[Example of the final board](https://oshwlab.com/user4091049/sfp-to-ttl-v1) with these components on the EasyEDA platform.\n"
  },
  {
    "path": "_tools/ont-ethtool-print-eeprom.md",
    "content": "---\ntitle: Ethtool Print EEPROM\nhas_children: false\nlayout: default\n---\n\n1. Get `ethtool -m` or `ethtool -e` and paste into the form\n\n<div id=\"app\">\n    <vue-lantiq-eeprom type='eeprom-ethtool'></vue-lantiq-eeprom>\n</div>\n<script src=\"https://unpkg.com/vue@latest\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue3-sfc-loader\"></script>\n<script src=\"/assets/js/vue-eeprom.js\"></script>"
  },
  {
    "path": "_tools/ont-lantiq-print-eeprom.md",
    "content": "---\ntitle: Lantiq Print EEPROM\nhas_children: false\nlayout: default\n---\n\n1. Get `sfp_a0_low_128` or `sfp_a2_info` and paste into the form\n\n\n<div id=\"app\">\n    <vue-lantiq-eeprom type='eeprom-lantiq'></vue-lantiq-eeprom>\n</div>\n<script src=\"https://unpkg.com/vue@latest\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/vue3-sfc-loader\"></script>\n<script src=\"/assets/js/vue-eeprom.js\"></script>"
  },
  {
    "path": "_tools/speed-gpon-eth.md",
    "content": "---\ntitle: Theoretical maximum speed calculator\nhas_children: false\nnav_order: 4\ndescription: Tool for calculating maximum speeds\nlayout: default\n---\n\n\n<h1>Ethernet calculator</h1>\n<form id=\"eth-speed-mtu\" novalidate>\n    <div class=\"form-floating mb-3\">\n        <input type=\"number\" class=\"form-control\" placeholder=\"MTU L2\" name=\"mtu\" id=\"mtu\" value=\"1500\" min=\"1000\" max=\"10000\" required>\n        <label for=\"mtu\">MTU L2 (no overhead for PPPoE/MAP, only Ethernet PPPoE)</label>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <div class=\"mb-3\">\n            <div class=\"form-check form-check-inline\">\n                <input class=\"form-check-input\" type=\"radio\" id=\"ip4\" name=\"ip\" value=\"4\" checked>\n                <label class=\"form-check-label\" for=\"ip4\">IPv4</label> \n            </div>\n            <div class=\"form-check form-check-inline\">\n                <input class=\"form-check-input\" type=\"radio\" id=\"ip6\" name=\"ip\" value=\"6\">\n                <label class=\"form-check-label\" for=\"ip6\">IPv6</label>\n            </div>\n        </div>\n    </div>\n    <select class=\"form-select mb-3\"  placeholder=\"IPv4 L2 protocol\" name=\"ipv4protocol\" id=\"ipv4protocol\" required>\n        <option value disabled selected>Select a Protocol</option>\n        <option value=\"ipoe\">IPoE</option>\n        <option value=\"pppoe\">PPPoE</option>\n        <option value=\"map-t\">MAP-T</option>\n        <option value=\"map-e\">MAP-E/4in6</option>\n    </select>\n    <select class=\"form-select mb-3\"  placeholder=\"IPv6 L2 protocol\" name=\"ipv6protocol\" id=\"ipv6protocol\" disabled required>\n        <option value disabled selected>Select a Protocol</option>\n        <option value=\"ipoe\">IPoE</option>\n        <option value=\"pppoe\">PPPoE</option>\n    </select>\n    <select class=\"form-select mb-3\"  placeholder=\"Speed\" name=\"speed\" required>\n        <option value disabled selected>Select a link speed</option>\n        <option value=\"10\">10 Mbps</option>\n        <option value=\"100\">100 Mbps</option>\n        <option value=\"200\">200 Mbps</option>\n        <option value=\"500\">500 Mbps</option>\n        <option value=\"1000\">1 Gbps</option>\n        <option value=\"2500\">2.5 Gbps</option>\n        <option value=\"5000\">5 Gbps</option>\n        <option value=\"10000\">10 Gbps</option>\n    </select>\n    <div class=\"mb-3\">\n        <input type=\"submit\" class=\"btn btn-primary\" value=\"Calculate!\">\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input readonly class=\"form-control\" type=\"number\" id=\"maxSpeed\" placeholder=\"Theoretical maximum speed\">\n        <label for=\"maxSpeed\">Theoretical maximum speed (Mbps)</label>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input readonly class=\"form-control\" type=\"number\" id=\"overhead\" placeholder=\"Ethernet overhead (%)\">\n        <label for=\"overhead\">Ethernet overhead (%)</label>\n    </div>\n\n</form>\n<h1>XG(S)-PON/GPON calculator</h1>\n<form id=\"gpon-speed-mtu\" novalidate>\n    <div class=\"form-floating mb-3\">\n        <input step=\"1\" type=\"number\" class=\"form-control\" placeholder=\"ONT number\" name=\"gpon-ont\" id=\"gpon-ont\" value=\"10\" min=\"1\" max=\"128\" required>\n        <label for=\"gpon-ont\">ONT number</label>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <select class=\"form-select mb-3\" placeholder=\"GPON Speed\" name=\"gpon-speed\" required>\n            <option value=\"2488.32\" selected>GPON</option>\n            <option value=\"9953.28\">XG(S)-PON/GPON</option>\n        </select>\n        <label for=\"gpon-speed\">GPON speed</label>\n    </div>\n    <div class=\"mb-3\">\n        <div class=\"form-check form-check-inline\">\n            <input class=\"form-check-input\" type=\"radio\" id=\"gpon-ip4\" name=\"gpon-ip\" value=\"4\" checked>\n            <label class=\"form-check-label\" for=\"gpon-ip4\">IPv4</label> \n        </div>\n        <div class=\"form-check form-check-inline\">\n            <input class=\"form-check-input\" type=\"radio\" id=\"gpon-ip6\" name=\"gpon-ip\" value=\"6\">\n            <label class=\"form-check-label\" for=\"gpon-ip6\">IPv6</label> \n        </div>\n    </div>\n    <select class=\"form-select mb-3\"  placeholder=\"IPv4 L2 protocol\" name=\"gpon-ipv4protocol\" id=\"gpon-ipv4protocol\" required>\n        <option value disabled selected>Select a Protocol</option>\n        <option value=\"ipoe\">IPoE</option>\n        <option value=\"pppoe\">PPPoE</option>\n        <option value=\"map-t\">MAP-T</option>\n        <option value=\"map-e\">MAP-E/4in6</option>\n    </select>\n    <select class=\"form-select mb-3\"  placeholder=\"IPv6 L2 protocol\" name=\"gpon-ipv6protocol\" id=\"gpon-ipv6protocol\" disabled required>\n        <option value disabled selected>Select a Protocol</option>\n        <option value=\"ipoe\">IPoE</option>\n        <option value=\"pppoe\">PPPoE</option>\n    </select>\n    <div class=\"mb-3\">\n        <input type=\"submit\" class=\"btn btn-primary\" value=\"Calculate!\">\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input step=\"1\" type=\"number\" class=\"form-control\" placeholder=\"GEM frame number\" name=\"gpon-gem-real\" id=\"gpon-gem-real\" min=\"1\" max=\"40\" readonly>\n        <label for=\"gpon-gem-real\">GEM frame number</label>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input  type=\"number\" class=\"form-control\" placeholder=\"GPON Average Ethernet Frame Size (Byte)\" name=\"gpon-average-packet-size\" id=\"gpon-average-packet-size\" readonly>\n        <label for=\"gpon-average-packet-size\">GPON Average Ethernet Frame Size (Byte)</label>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input  type=\"number\" class=\"form-control\" placeholder=\"Theoretical maximum speed (Gbps)\" name=\"gpon-maxSpeed\" id=\"gpon-maxSpeed\" readonly>\n        <label for=\"gpon-maxSpeed\">Theoretical maximum speed (Mbps)</label>\n    </div>\n    <div class=\"form-floating mb-3\">\n        <input  type=\"number\" class=\"form-control\" placeholder=\"GPON overhead (%)\" name=\"gpon-overhead\" id=\"gpon-overhead\" readonly>\n        <label for=\"gpon-overhead\">GPON overhead (%)</label>\n    </div>\n</form>\n  \n<script>\n    var form = document.getElementById('eth-speed-mtu');\n    var radioIp = document.getElementsByName('ip');\n    [...radioIp].forEach(el =>  {el.addEventListener('change', (event) => {\n            var ip = document.querySelector('input[name=\"ip\"]:checked').value;\n            document.getElementById('ipv4protocol').disabled = (ip === '6');\n            document.getElementById('ipv6protocol').disabled = (ip === '4');\n            \n        });\n    });\n    form.addEventListener('submit',(event) => {\n        if (!form.checkValidity()) {\n            event.preventDefault();\n            [...form.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        } else { \n            [...form.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', false));\n            event.preventDefault();\n\n            var formdata = new FormData(form);\n            var overheadipv4 = {\n                \"ipoe\" : 20,\n                \"pppoe\" : 28,\n                \"map-t\" : 40,\n                \"map-e\" : 60,\n            };\n            var overheadipv6 = {\n                \"ipoe\" : 40,\n                \"pppoe\" : 48,\n            };\n            var overheadtcp = 20;\n            var overheadeth = 14;\n            var overheadfcs = 4;\n            var overheadgap = {\n                '10' : 5.875,\n                '100' : 12,\n                '200' : 8,\n                '500' : 8,\n                '1000' : 8,\n                '2500' : 5,\n                '5000' : 5,\n                '10000' : 5,\n            };\n            var preamble = 8;\n            var cip = formdata.get('ip');\n            var coverheadip = formdata.get('ip') === '4' ? overheadipv4[formdata.get('ipv4protocol')] : overheadipv6[formdata.get('ipv6protocol')];\n            var mtu = formdata.get('mtu');\n            var mss = mtu - coverheadip;\n            var overhead = overheadtcp + overheadeth + overheadfcs + overheadgap[formdata.get('speed')] + preamble + coverheadip;\n            document.getElementById('overhead').value = ((1-mss /(overhead + mss))  * 100).toFixed(2);\n            var th =  mss /(overhead + mss);\n            \n            document.getElementById('maxSpeed').value = (th * formdata.get('speed')).toFixed(2);\n        }\n    });\n    var formgpon = document.getElementById('gpon-speed-mtu');\n    var radioIp = document.getElementsByName('gpon-ip');\n    [...radioIp].forEach(el =>  {el.addEventListener('change', (event) => {\n            var ip = document.querySelector('input[name=\"gpon-ip\"]:checked').value;\n            document.getElementById('gpon-ipv4protocol').disabled = (ip === '6');\n            document.getElementById('gpon-ipv6protocol').disabled = (ip === '4');\n            \n        });\n    });\n    formgpon.addEventListener('submit',(event) => {\n        if (!formgpon.checkValidity()) {\n            event.preventDefault();\n            [...formgpon.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', true));\n        } else {\n            event.preventDefault();\n            [...formgpon.elements].map(e => e.parentNode).forEach(e => e.classList.toggle('was-validated', false));\n            var formdata = new FormData(formgpon);\n            var gtc = 38880;\n            var overheadgem = 5;\n            var overheadpcbd = 30 + 8*formdata.get('gpon-ont');\n            var overheadipv4 = {\n                \"ipoe\" : 20,\n                \"pppoe\" : 28,\n                \"map-t\" : 40,\n                \"map-e\" : 60,\n            };\n            var overheadipv6 = {\n                \"ipoe\" : 40,\n                \"pppoe\" : 48,\n            };\n            var overheadtcp = 20;\n            var overheadeth = 14;\n            var overheadfcs = 4;\n            var cip = formdata.get('gpon-ip');\n            var coverheadip = formdata.get('gpon-ip') === '4' ? overheadipv4[formdata.get('gpon-ipv4protocol')] : overheadipv6[formdata.get('gpon-ipv6protocol')];\n            var overheadframeeth = overheadtcp + overheadeth + overheadfcs + coverheadip;\n            var gem, overheadgtc, payload;\n            for(gem = 0; gem < 40; gem++) {\n                overheadgtc = overheadgem + gem * (overheadpcbd+overheadframeeth); \n                payload = gtc - overheadgtc;\n                if(payload/gem < 1500)  break;\n            }\n\n            document.getElementById('gpon-gem-real').value = gem;\n            document.getElementById('gpon-average-packet-size').value = (payload/gem).toFixed(2);\n\n\n            document.getElementById('gpon-overhead').value = ((1-payload/(payload+overheadgtc)) * 100).toFixed(2);\n            var th =  payload /gtc;\n            \n            document.getElementById('gpon-maxSpeed').value = (th * formdata.get('gpon-speed')).toFixed(2);\n        }\n    });\n</script>\n"
  },
  {
    "path": "_tools/ttl-uart-adapter.md",
    "content": "---\ntitle: TTL UART Adapter\nhas_children: false\nnav_order: 2\nlayout: default\n---\n\nA TTL UART adapter makes it possible to connect the stick's serial interface to a computer via a USB interface. This makes it easy to send commands on modern computers through serial emulation, just like the serial ports of the 1990s.\n\nThese adapters are widely used in the modding of SFPs, and in general of most embedded devices, since a serial port is always present in all of them and is also used to de-brick such devices.\n\nTTL adapters can be easily found on Amazon, the most recommended one being:\n\n- DSD TECH USB to TTL Serial Adapter with FTDI FT232RL Chip [Amazon.com](https://www.amazon.com/dp/B07BBPX8B8) [Amazon.it](https://www.amazon.it/dp/B07BBPX8B8)\n\nAlternatively, an [Arduino can be used to emulate a TTL adapter](https://create.arduino.cc/projecthub/PatelDarshil/ways-to-use-arduino-as-usb-to-ttl-converter-475533)"
  },
  {
    "path": "assets/css/just-the-docs-dark.scss",
    "content": "{% include css/just-the-docs.scss.liquid color_scheme=\"dark\" primary_color=\"blue\" %}\n"
  },
  {
    "path": "assets/css/just-the-docs-default.scss",
    "content": "{% if site.color_scheme and site.color_scheme != \"nil\" %}\n  {% assign color_scheme = site.color_scheme %}\n{% else %}\n  {% assign color_scheme = \"light\" %}\n{% endif %}\n{% include css/just-the-docs.scss.liquid color_scheme=color_scheme primary_color=\"blue\" %}"
  },
  {
    "path": "assets/css/just-the-docs-light.scss",
    "content": "{% include css/just-the-docs.scss.liquid color_scheme=\"light\" primary_color=\"blue\"  %}"
  },
  {
    "path": "assets/js/cigpassword.js",
    "content": "function hexToBytes(hex) {\n    let bytes = new Uint8Array(hex.length / 2);\n    for (let i = 0; i < hex.length; i += 2) {\n        bytes[i / 2] = parseInt(hex.substr(i, 2), 16);\n    }\n    return bytes;\n}\n\nfunction cigpassword_gpon(ont_serial, ont_user, length = 0, xgspon = false) {\n    const hardcoded_key = '01030a1013051764c8061419b49d0500';\n    const hardcoded_seed = '2345679abcdefghijkmnpqrstuvwxyzACDEFGHJKLMNPQRSTUVWXYZ';\n\n    let ont_vendor = ont_serial.substring(0, 4).toUpperCase();\n    let ont_id = ont_serial.substring(4).toLowerCase();\n\n    if (xgspon) {\n        ont_id = ont_id.toUpperCase();\n    }\n\n    let formatted_serial = `${ont_vendor}${ont_id}`;\n\n    let key_bytes = new Uint8Array(hardcoded_key.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));\n    if (length > 0) {\n        key_bytes[15] = length;\n    }\n\n    let formatted_serial_user = formatted_serial;\n    if (ont_user) {\n        formatted_serial_user += `-${ont_user}`;\n    }\n\n    let hmac = CryptoJS.HmacMD5(formatted_serial_user, CryptoJS.lib.WordArray.create(key_bytes));\n    let pw_md5_hmac = hexToBytes(hmac.toString(CryptoJS.enc.Hex));\n\n    let output = Array(pw_md5_hmac.length);\n\n    for (let i = 0; i < pw_md5_hmac.length; i++) {\n        output[i] = hardcoded_seed[pw_md5_hmac[i] % 0x36];\n    }\n\n    if (length > 0) {\n        return output.slice(0, length).join('');\n    } else {\n        return output.join('');\n    }\n}\n"
  },
  {
    "path": "assets/js/omci-vlan.js",
    "content": "/* Copyright (C) Erny <info@erny.dev>\n * SPDX-License-Identifier: MPL-2.0-no-copyleft-exception\n*/\n\n// Convert hex string to binary representation\nfunction hex2bin(hexString){\n    var result = \"\";\n    hexString = hexString.replace(/0x/g, \"\").replace(/ /g, '').toLowerCase();\n    \n    for(const hexChr of hexString) {\n        const bin = parseInt(hexChr, 16).toString(2).padStart(4, '0');\n        \n        if (!bin.isNaN) {\n            result += bin;\n        } else {\n            throw new Error(\"The hex string is not valid!\");\n        }\n    }\n\n    return result;\n}\n\n// Helper function to splice binary array and convert to decimal\nfunction binSpliceToDec(binArray, len) {\n    const result = binArray.splice(0, len);\n    return parseInt(result.join(\"\"), 2);\n}\n\n// GPON OMCI VLAN Table parser\nfunction vlanTableParse(hexString) {\n    const binaryArray = hex2bin(hexString).split('');\n    var result = new Array();\n        \n    while(binaryArray.length > 0) {\n        var vlanRule = new Array();\n            \n        vlanRule.push(binSpliceToDec(binaryArray, 4));\n        vlanRule.push(binSpliceToDec(binaryArray, 13));\n        vlanRule.push(binSpliceToDec(binaryArray, 3));\n        binaryArray.splice(0, 12); // Padding\n        vlanRule.push( binSpliceToDec(binaryArray, 4));\n        vlanRule.push(binSpliceToDec(binaryArray, 13));\n        vlanRule.push(binSpliceToDec(binaryArray, 3));\n        binaryArray.splice(0, 8); // Padding\n        vlanRule.push(binSpliceToDec(binaryArray, 4));\n        vlanRule.push(binSpliceToDec(binaryArray, 2));\n        binaryArray.splice(0, 10); // Padding\n        vlanRule.push(binSpliceToDec(binaryArray, 4));\n        vlanRule.push(binSpliceToDec(binaryArray, 13));\n        vlanRule.push(binSpliceToDec(binaryArray, 3));\n        binaryArray.splice(0, 12); // Padding\n        vlanRule.push(binSpliceToDec(binaryArray, 4));\n        vlanRule.push(binSpliceToDec(binaryArray, 13));\n        vlanRule.push(binSpliceToDec(binaryArray, 3));\n        \n        result.push(vlanRule);\n    }\n        \n    return result;\n}\n"
  },
  {
    "path": "assets/js/rootLantiq.js",
    "content": "const LOAD_ADDR = \"80800000\"\nconst IMAGE0_ADDR = \"C0000 740000\";\nconst IMAGE1_ADDR = \"800000 800000\";\n\nasync function detectUboot(serial) {\n    await serial.readLine((line) => {\n        if (line.startsWith('U-Boot')) {\n            return true;\n        }\n    });\n}\n\nasync function waitUbootStop(serial, sfpModel, outputMsgCallback) {\n    const interruptChar = String.fromCharCode(3);\n\n    const interval = setInterval(function() {\n        serial.writeString(interruptChar);\n    }, 10);\n\n    await detectUboot(serial);\n    outputMsgCallback(`Root in progress: Trigger characters received. DO NOT TOUCH THE ${sfpModel} UNTIL THE PROCEDURE IS COMPLETED!`);\n    await delay(5000);\n    clearInterval(interval);\n}\n\nasync function checkUbootUnlocked(serial) {\n    let unlocked = false;\n\n    await serial.readLine((line) => {\n        if (line.startsWith('Press SPACE to delay and Ctrl-C to abort autoboot')) {\n            unlocked = true;\n            return true\n        }\n    }, 2000);\n\n    return unlocked;\n}\n\nasync function waitFailbackShell(serial, outputMsgCallback) {\n    await serial.readLine((line) => {\n        if (line.startsWith('Press the [f] key and hit [enter] to enter failsafe mode')) {\n            return true;\n        }\n    });\n\n    let interval = setInterval(function() {\n        serial.writeString('f\\n');\n    }, 10);\n\n    outputMsgCallback(\"Root in progress: Trigger characters received. Waiting for boot to end...\");\n    await delay(3000);\n    clearInterval(interval);\n\n    interval = setInterval(function() {\n        serial.writeString(String.fromCharCode(10));\n    }, 10);\n\n    await serial.readLine((line) => {\n        if (line.includes('root@(none)')) {\n            return true;\n        }\n    });\n\n    await delay(1000);\n    clearInterval(interval);\n}\n\nasync function lantiqRootUboot(port, sfpModel, outputMsgCallback, outputErrorCallback, baudRate = 115200) {\n    const serial = new SerialReadWrite(port, baudRate);\n\n    try {\n        outputMsgCallback(`Please disconnect the ${sfpModel} from the SFP adapter if it is currently plugged in!`);\n        await delay(10000);\n        outputMsgCallback(`Now you need to insert the ${sfpModel} into the SFP adapter, if the procedure does not go ahead, check the connections and then remove and reconnect the ${sfpModel} again`);\n\n        while(true) {\n            await waitUbootStop(serial, sfpModel, outputMsgCallback);\n            const ubootUnlocked = await checkUbootUnlocked(serial);\n\n            if (ubootUnlocked == true) {\n                break;\n            }\n\n            outputMsgCallback(\"Root in progress: Set U-Boot bootdelay to 5...\");\n            await serial.writeString('setenv bootdelay 5\\n');\n            await delay(1000);\n            outputMsgCallback(\"Root in progress: Enable ASC serial...\");\n            await serial.writeString('setenv asc0 0\\n');\n            await delay(1000);\n            outputMsgCallback(\"Root in progress: Set GPIO to unlock serial...\");\n            await serial.writeString('setenv preboot \"gpio set 3;gpio input 2;gpio input 105;gpio input 106;gpio input 107;gpio input 108\"\\n');\n            await delay(1000);\n            outputMsgCallback(\"Root in progress: Save changes...\");\n            await serial.writeString('saveenv\\n');\n            await delay(1000);\n            outputMsgCallback(\"Root in progress: Rebooting...\");\n            await serial.writeString('reset\\n');\n            await delay(1000);\n        }\n\n        return true;\n    } catch (err) {\n        outputErrorCallback(`Error: ${err.message}`);\n        return false;\n    } finally {\n        await serial.closePort();\n    }\n}\n\nasync function unlockHuaweiShell(port, outputMsgCallback, outputErrorCallback, baudRate = 115200) {\n    const serial = new SerialReadWrite(port, baudRate);\n\n    try {\n        outputMsgCallback(\"Root in progress: Rebooting...\");\n        await serial.writeString('reset\\n');\n        await delay(1000);\n        outputMsgCallback(\"Waiting for reboot\");\n        await waitFailbackShell(serial, outputMsgCallback);\n        outputMsgCallback(\"Root in progress: Enable full Linux shell...\");\n        await serial.writeString('mount_root && mkdir -p /overlay/etc && sed \"s|/opt/lantiq/bin/minishell|/bin/ash|g\" /rom/etc/passwd > /overlay/etc/passwd\\n');\n        await delay(1000);\n        outputMsgCallback(\"Root in progress: Umount rootfs partitions...\");\n        await serial.writeString('umount /overlay && umount -a\\n');\n        await delay(1000);\n        return true;\n    } catch (err) {\n        outputErrorCallback(`Error: ${err.message}`);\n        return false;\n    } finally {\n        await serial.closePort();\n    }\n}\n\nasync function changeBaudrate(port, newBaudrate, currBaudrate, outputErrorCallback) {\n    let serial = new SerialReadWrite(port, currBaudrate);\n\n    try {\n        await serial.writeString(`setenv baudrate ${newBaudrate}\\n`);\n        await delay(1000);\n        await serial.closePort();\n        serial = new SerialReadWrite(port, newBaudrate);\n\n        const interval = setInterval(function() {\n            serial.writeString(String.fromCharCode(13));\n        }, 10);\n\n        await serial.readLine((line) => {\n            if (line.startsWith('FALCON')) {\n                clearInterval(interval);\n                return true;\n            }\n        });\n\n        return true;\n    } catch (err) {\n        outputErrorCallback(`Error: ${err.message}`);\n        return false;\n    } finally {\n        await serial.closePort();\n    }\n}\n\nasync function sendImageMtd(port, data, baudRate, outputErrorCallback, progressCallback) {\n    const serial = new SerialReadWrite(port, baudRate);\n\n    try {\n        await serial.writeString(`loady 0x${LOAD_ADDR}\\n`);\n        await delay(1000);\n        await sendXYMini(serial, data, progressCallback);\n        return true;\n    } catch (err) {\n        outputErrorCallback(`Error: ${err.message}`);\n        return false;\n    } finally {\n        await serial.closePort();\n    }\n}\n\nasync function waitEndImageLoad(port, baudRate, outputErrorCallback) {\n    const serial = new SerialReadWrite(port, baudRate);\n\n    try {\n        await serial.readLine((line) => {\n            if (line.includes('Total Size')) {\n                return true;\n            }\n        });\n\n        await delay(1000);\n        return true;\n    } catch (err) {\n        outputErrorCallback(`Error: ${err.message}`);\n        return false;\n    } finally {\n        await serial.closePort();\n    }\n}\n\nasync function flashImageMtd(port, image, baudRate, outputErrorCallback) {\n    const serial = new SerialReadWrite(port, baudRate);\n\n    try {\n        if (image == \"image0\") {\n            await serial.writeString(`sf probe 0 && sf erase ${IMAGE0_ADDR} && sf write ${LOAD_ADDR} ${IMAGE0_ADDR} && setenv committed_image 0 && setenv image0_is_valid 1 && saveenv && reset\\n`);\n        } else {\n            await serial.writeString(`sf probe 0 && sf erase ${IMAGE1_ADDR} && sf write ${LOAD_ADDR} ${IMAGE1_ADDR} && setenv committed_image 1 && setenv image1_is_valid 1 && saveenv && reset\\n`);\n        }\n\n        /* Wait to avoid the user from disconnecting the SFP while the image is being flashed */\n        await delay(1000);\n        await detectUboot(serial);\n        return true;\n    } catch (err) {\n        outputErrorCallback(`Error: ${err.message}`);\n        return false;\n    } finally {\n        await serial.closePort();\n    }\n}\n"
  },
  {
    "path": "assets/js/serialUtil.js",
    "content": "function delay(ms) {\n    return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nclass SerialReadWrite {\n    constructor(port, baudrate) {\n        this.port = port;\n        this.baudRate = baudrate;\n        this.isPortOpen = false;\n        this.textDecoder = new TextDecoder();\n        this.textEncoder = new TextEncoder();\n    }\n\n    async openPort() {\n        await this.port.open({ baudRate: this.baudRate });\n    }\n\n    async closePort() {\n        await this.port.close();\n    }\n\n    async readBytes(retryError = 5, errorNum = 0) {\n        let reader = undefined;\n\n        if (this.isPortOpen === false) {\n            await this.openPort();\n            this.isPortOpen = true;\n        }\n\n        try {\n            if (reader === undefined) {\n                reader = this.port.readable.getReader();\n            }\n\n            const promiseResult = await reader.read();\n\n            if (promiseResult === undefined) {\n                return undefined;\n            }\n\n            return promiseResult.value;\n        } catch (e) {\n            if (e instanceof DOMException &&\n                (e.name === \"BreakError\" || e.name === \"FramingError\" || e.name === \"ParityError\")) {\n                console.log(e);\n\n                if (errorNum > retryError) {\n                    throw e;\n                }\n\n                return await this.readBytes(retryError, errorNum++);\n            } else {\n                throw e;\n            }\n        } finally {\n            if (reader) {\n                reader.releaseLock();\n                reader = undefined;\n            }\n        }\n    }\n\n    async readLine(readCallback, timeout = undefined) {\n        let reader = undefined;\n        let extraChunk = \"\";\n\n        if (this.isPortOpen === false) {\n            await this.openPort();\n            this.isPortOpen = true;\n        }\n\n        while (true) {\n            try {\n                if (reader === undefined) {\n                    reader = this.port.readable.getReader();\n                }\n\n                let serialValue;\n                if (timeout === undefined) {\n                    const { value, done } = await reader.read();\n                    serialValue = value;\n                } else {\n                    const { value, done } = await Promise.race([\n                        reader.read(),\n                        new Promise((_, reject) => setTimeout(reject, timeout, new Error(\"timeout\")))\n                    ]);\n                    serialValue = value;\n                }\n\n                const linesValue = this.textDecoder.decode(serialValue).split('\\n');\n                linesValue[0] = extraChunk + linesValue[0];\n                extraChunk = linesValue[linesValue.length - 1];\n\n                for (const line of linesValue) {\n                    if (readCallback(line) === true) {\n                        return;\n                    }\n                }\n            } catch (e) {\n                if (e instanceof DOMException &&\n                    (e.name === \"BreakError\" || e.name === \"FramingError\" || e.name === \"ParityError\")) {\n                    console.log(e);\n                } else if (e instanceof Error && e.message === \"timeout\") {\n                    return;\n                } else {\n                    throw e;\n                }\n            } finally {\n                if (reader) {\n                    reader.releaseLock();\n                    reader = undefined;\n                }\n            }\n        }\n    }\n\n    async writeBytes(bytes) {\n        let writer = undefined;\n\n        if (this.isPortOpen === false) {\n            await this.openPort();\n            this.isPortOpen = true;\n        }\n\n        try {\n            if (writer === undefined) {\n                writer = this.port.writable.getWriter();\n            }\n\n            writer.write(bytes);\n        } finally {\n            if (writer) {\n                writer.releaseLock();\n                writer = undefined;\n            }\n        }\n    }\n\n    async writeString(str) {\n        await this.writeBytes(this.textEncoder.encode(str));\n    }\n}\n"
  },
  {
    "path": "assets/js/vue/vue-lantiq-eeprom.vue",
    "content": "<template>\n    <div>\n        <div class=\"form-floating mb-3\">\n            <textarea v-if=\"type === 'eeprom-ethtool'\" type=\"text\" class=\"form-control\" placeholder=\"EEPROM input\" id=\"eeprom\" v-model=\"eeprom\"></textarea>\n            <input v-else type=\"text\" class=\"form-control\" placeholder=\"EEPROM input\" id=\"eeprom\" v-model=\"eeprom\">\n            <label for=\"eeprom\">EEPROM input</label>\n        </div>\n        <template v-if=\"type === 'eeprom-lantiq'\">\n            <div class=\"form-floating mb-3\">\n                <select class=\"form-control\" placeholder=\"Select EEPROM\" id=\"eeprom-type\" v-model=\"eeprom_switch\">\n                    <option value=\"A0\">EEPROM A0</option>\n                    <option value=\"A2\">EEPROM A2</option>\n                </select>\n                <label for=\"eeprom-type\">Select EEPROM A0 or A2</label>\n            </div>\n            <div class=\"table-wrapper\">\n                <table>\n                    <tr>\n                        <th>address</th>\n                        <th>size</th>\n                        <th>name</th>\n                        <th>hex value</th>\n                        <th>decoded value</th>\n                        <th>description</th>\n                    </tr>\n                    <tr v-for=\"(value, key, index) in eeprom_json\" :key=\"index\">\n                        <td>{{ value.address }}</td>\n                        <td>{{ value.size }}</td>\n                        <td v-if=\"value.name.startsWith('**')\"><b>{{ value.name.replaceAll('**', '') }}</b></td>\n                        <td v-else>{{ value.name }}</td>\n                        <td><code v-if=\"value.value\">{{ chunk(value.value)?.map(it => `0x${it}`)?.join(' ') }}</code></td>\n                        <td><span v-if=\"value.human\">{{ value.human }}</span></td>\n                        <td v-if=\"value.description.startsWith('**')\"><b>{{ value.description.replaceAll('**', '') }}</b></td>\n                        <td v-else>{{ value.description }}</td>\n                    </tr>\n                </table>\n            </div>\n            <div markdown=\"span\" class=\"alert alert-blue\" role=\"alert\" v-if=\"revision\">\n                <svg viewBox=\"0 0 24 24\" class=\"info-icon\"><use xlink:href=\"#svg-info\"></use></svg>\n                <span> <b>Info</b> For more information, see the {{ revision }} specification.</span>\n            </div>\n        </template>\n        <template v-if=\"type === 'eeprom-ethtool'\">\n            <div class=\"form-floating mb-3\">\n                <select class=\"form-control\" placeholder=\"Select EEPROM\" id=\"eeprom-type\" v-model=\"eeprom_switch\">\n                    <option value=\"A0\">EEPROM A0</option>\n                    <option value=\"A2\">EEPROM A2</option>\n                </select>\n                <label for=\"eeprom-type\">Select EEPROM A0 or A2</label>\n            </div>\n            <div class=\"table-wrapper\">\n                <table>\n                    <tr>\n                        <th>address</th>\n                        <th>size</th>\n                        <th>name</th>\n                        <th>hex value</th>\n                        <th>decoded value</th>\n                        <th>description</th>\n                    </tr>\n                    <tr v-for=\"(value, key, index) in eeprom_json\" :key=\"index\">\n                        <td>{{ value.address }}</td>\n                        <td>{{ value.size }}</td>\n                        <td v-if=\"value.name.startsWith('**')\"><b>{{ value.name.replaceAll('**', '') }}</b></td>\n                        <td v-else>{{ value.name }}</td>\n                        <td><code v-if=\"value.value\">{{ chunk(value.value)?.map(it => `0x${it}`)?.join(' ') }}</code></td>\n                        <td><span v-if=\"value.human\">{{ value.human }}</span></td>\n                        <td v-if=\"value.description.startsWith('**')\"><b>{{ value.description.replaceAll('**', '') }}</b></td>\n                        <td v-else>{{ value.description }}</td>\n                    </tr>\n                </table>\n            </div>\n            <div markdown=\"span\" class=\"alert alert-blue\" role=\"alert\" v-if=\"revision\">\n                <svg viewBox=\"0 0 24 24\" class=\"info-icon\"><use xlink:href=\"#svg-info\"></use></svg>\n                <span> <b>Info</b> For more information, see the {{ revision }} specification.</span>\n            </div>\n        </template>\n        <template v-if=\"type === 'eeprom-rooted-edit'\">\n            <div class=\"form-floating mb-3\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON S/N HEX\" id=\"gpon-serial\" v-model=\"serial_hex\" style=\"width: 50%\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON S/N ASCII\" id=\"gpon-serial-ascii\" v-model=\"serial_ascii\" style=\"width: 50%\">\n                <label for=\"gpon-serial\">GPON S/N in format 0x47504F4E12345678 or GPON12345678</label>\n            </div>\n            <div class=\"form-floating mb-3\">\n                <select class=\"form-control\" placeholder=\"GPON Ploam/LoID Switch\" id=\"gpon-loid-ploam-switch\" v-model=\"loidPloamSwitch\">\n                    <option value=\"02\">GPON PLOAM</option>\n                    <option value=\"01\">GPON LoID</option>\n                </select>\n                <label for=\"gpon-loid-ploam-switch\">GPON Ploam/LoID Switch</label>\n            </div>\n            <div class=\"form-floating mb-3\" v-if=\"loidPloamSwitch === '02'\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON Ploam Password HEX\" id=\"gpon-ploam\" v-model=\"ploam_hex\" style=\"width: 50%\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON Ploam Password ASCII\" id=\"gpon-ploam-ascii\" v-model=\"ploam_ascii\" style=\"width: 50%\">\n                <label for=\"gpon-ploam\">GPON Ploam in format 0x31323334353637383930 or 1234567890</label>\n            </div>\n            <div class=\"form-floating mb-3\" v-if=\"loidPloamSwitch === '01'\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON LoID User\" id=\"gpon-loid\" v-model=\"loid_hex\" style=\"width: 50%\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON LoID User\" id=\"gpon-loid-ascii\" v-model=\"loid_ascii\" style=\"width: 50%\">\n            <label for=\"gpon-loid\">GPON LoID User in hex format 0x31323334353637383930 or 1234567890</label>\n            </div>\n            <div class=\"form-floating mb-3\" v-if=\"loidPloamSwitch === '01'\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON LoPW Password\" id=\"gpon-lopw\" v-model=\"lopw_hex\" style=\"width: 50%\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"GPON LoPW Password\" id=\"gpon-lopw-ascii\" v-model=\"lopw_ascii\" style=\"width: 50%\">\n                <label for=\"gpon-lopw\">GPON LoPW Password in hex format 0x31323334353637383930 or 1234567890</label>\n            </div>\n            <div class=\"form-floating mb-3\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"MAC address\" id=\"bridge-mac\"  v-model=\"mac_prettier\" pattern=\"[0-9A-Fa-f]{2}[:-]?[0-9A-Fa-f]{2}[:-]?[0-9A-Fa-f]{2}[:-]?[0-9A-Fa-f]{2}[:-]?[0-9A-Fa-f]{2}[:-]?[0-9A-Fa-f]{2}\">\n                <label for=\"bridge-mac\">Bridge MAC Address in format 48:57:02:da:be:ef, 48-57-02-da-be-ef or 485702dabeef</label>\n            </div>\n            <div class=\"form-floating mb-3\">\n                <input type=\"text\" class=\"form-control\" placeholder=\"sfp_a2_info output\" id=\"sfp-a2-info\" v-model=\"eeprom\" readonly>\n                <label for=\"sfp-a2-info\">sfp_a2_info output</label>\n            </div>\n        </template>\n    </div>\n</template>\n<script>\nexport default {\n    data() {\n        return {\n            raw: null,\n            eeprom_decode: null,\n            lantiq_0: null,\n            lantiq_last: null,\n            eeprom_table: {\n                \"A0\":[\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**BASE ID FIELDS (SFF-8472)**\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"0\",\n                        \"size\": \"1\",\n                        \"name\": \"Identifier\",\n                        \"description\": \"Type of transceiver\",\n                        \"parse\": \"table_identifier_values\"\n                    },\n                    {\n                        \"address\": \"1\",\n                        \"size\": \"1\",\n                        \"name\": \"Ext identifier\",\n                        \"description\": \"Additional information about the transceiver\",\n                        \"parse\": \"table_phy_device_identifier_value\"\n                    },\n                    {\n                        \"address\": \"2\",\n                        \"size\": \"1\",\n                        \"name\": \"Connector\",\n                        \"description\": \"Type of media connector\",\n                        \"parse\": \"table_connector_value\"\n                    },\n                    {\n                        \"address\": \"3-10\",\n                        \"size\": \"8\",\n                        \"name\": \"Transceiver\",\n                        \"description\": \"Code for optical compatibility\"\n                    },\n                    {\n                        \"address\": \"11\",\n                        \"size\": \"1\",\n                        \"name\": \"Encoding\",\n                        \"description\": \"High speed serial encoding algorithm\",\n                        \"parse\": \"table_encoding_value\"\n                    },\n                    {\n                        \"address\": \"12\",\n                        \"size\": \"1\",\n                        \"name\": \"Signaling Rate, Nominal\",\n                        \"description\": \"Nominal signaling rate\",\n                        \"parse\": \"hexToRate\"\n                    },\n                    {\n                        \"address\": \"13\",\n                        \"size\": \"1\",\n                        \"name\": \"Rate Identifier\",\n                        \"description\": \"Type of rate select functionality\"\n                    },\n                    {\n                        \"address\": \"14\",\n                        \"size\": \"1\",\n                        \"name\": \"Length (SMF,km)\",\n                        \"description\": \"Link length supported for single-mode fiber, units of km\",\n                        \"parse\": \"hexTo_km\"\n                    },\n                    {\n                        \"address\": \"15\",\n                        \"size\": \"1\",\n                        \"name\": \"Length (SMF)\",\n                        \"description\": \"Link length supported for single-mode fiber, units of 100 m\",\n                        \"parse\": \"hexTo100m\"\n                    },\n                    {\n                        \"address\": \"16\",\n                        \"size\": \"1\",\n                        \"name\": \"Length (50 um, OM2)\",\n                        \"description\": \"Link length supported for 50 um OM2 fiber, units of 10 m\",\n                        \"parse\": \"hexTo10m\"\n                    },\n                    {\n                        \"address\": \"17\",\n                        \"size\": \"1\",\n                        \"name\": \"Length (62.5 um, OM1)\",\n                        \"description\": \"Link length supported for 62.5 um OM1 fiber, units of 10 m\",\n                        \"parse\": \"hexTo10m\"\n                    },\n                    {\n                        \"address\": \"18\",\n                        \"size\": \"1\",\n                        \"name\": \"Length copper cable\",\n                        \"description\": \"Link length supported for copper or direct attach cable, units of m\",\n                        \"parse\": \"hexTo_m\"\n                    },\n                    {\n                        \"address\": \"19\",\n                        \"size\": \"1\",\n                        \"name\": \"Length (50 um, OM3)\",\n                        \"description\": \"Link length supported for 50 um OM3 fiber, units of 10 m\",\n                        \"parse\": \"hexTo10m\"\n                    },\n                    {\n                        \"address\": \"20-35\",\n                        \"size\": \"16\",\n                        \"name\": \"Vendor name\",\n                        \"description\": \"SFP vendor name (ASCII)\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"36\",\n                        \"size\": \"1\",\n                        \"name\": \"Transceiver\",\n                        \"description\": \"Code for optical compatibility\",\n                        \"parse\":\"table_extended_specification_compliance_codeds\"\n                    },\n                    {\n                        \"address\": \"37-39\",\n                        \"size\": \"3\",\n                        \"name\": \"Vendor OUI\",\n                        \"description\": \"SFP vendor IEEE company ID\"\n                    },\n                    {\n                        \"address\": \"40-55\",\n                        \"size\": \"16\",\n                        \"name\": \"Vendor PN\",\n                        \"description\": \"Part number provided by SFP vendor (ASCII)\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"56-59\",\n                        \"size\": \"4\",\n                        \"name\": \"Vendor rev\",\n                        \"description\": \"Revision level for part number provided by vendor (ASCII)\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"60-61\",\n                        \"size\": \"2\",\n                        \"name\": \"Wavelength\",\n                        \"description\": \"Laser wavelength\",\n                        \"parse\": \"hexTo_nm\"\n                    },\n                    {\n                        \"address\": \"62\",\n                        \"size\": \"1\",\n                        \"name\": \"Fibre Channel Speed 2\",\n                        \"description\": \"Transceiver's Fibre Channel speed capabilities\"\n                    },\n                    {\n                        \"address\": \"63\",\n                        \"size\": \"1\",\n                        \"name\": \"CC_BASE\",\n                        \"description\": \"Check code for Base ID Fields (addresses 0 to 62)\"\n                    },\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**EXTENDED ID FIELDS (SFF-8472)**\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"64-65\",\n                        \"size\": \"2\",\n                        \"name\": \"Options\",\n                        \"description\": \"Indicates which optional transceiver signals are implemented\"\n                    },\n                    {\n                        \"address\": \"66\",\n                        \"size\": \"1\",\n                        \"name\": \"Signaling Rate, max\",\n                        \"description\": \"Upper signaling rate margin, units of %\"\n                    },\n                    {\n                        \"address\": \"67\",\n                        \"size\": \"1\",\n                        \"name\": \"Signaling Rate, min\",\n                        \"description\": \"Lower signaling rate margin, units of %\"\n                    },\n                    {\n                        \"address\": \"68-83\",\n                        \"size\": \"16\",\n                        \"name\": \"Vendor SN\",\n                        \"description\": \"Serial number provided by vendor (ASCII)\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"84-91\",\n                        \"size\": \"8\",\n                        \"name\": \"Date code\",\n                        \"description\": \"Vendor's manufacturing date code\"\n                    },\n                    {\n                        \"address\": \"92\",\n                        \"size\": \"1\",\n                        \"name\": \"Diagnostic Monitoring Type\",\n                        \"description\": \"Indicates which type of diagnostic monitoring is implemented\",\n                        \"parse\":\"table_diagnostic_monitoring_type\"\n                    },\n                    {\n                        \"address\": \"93\",\n                        \"size\": \"1\",\n                        \"name\": \"Enhanced Options\",\n                        \"description\": \"Indicates which optional enhanced features are implemented\",\n                        \"parse\":\"table_enhanced_options\"\n                    },\n                    {\n                        \"address\": \"94\",\n                        \"size\": \"1\",\n                        \"name\": \"SFF-8472 Compliance\",\n                        \"description\": \"Indicates which revision of SFF-8472 the transceiver complies with\",\n                        \"parse\":\"table_compliance\"\n                    },\n                    {\n                        \"address\": \"95\",\n                        \"size\": \"1\",\n                        \"name\": \"CC_EXT\",\n                        \"description\": \"Check code for the Extended ID Fields (addresses 64 to 94)\"\n                    },\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**VENDOR SPECIFIC FIELDS**\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"96-127\",\n                        \"size\": \"32\",\n                        \"name\": \"Vendor data\",\n                        \"description\": \"Vendor specifc data (ASCII)\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"128-255\",\n                        \"size\": \"128\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    },\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**EXTRA EEPROM FIELDS**\",\n                        \"description\": \"**Not exposed to I2C interface**\"\n                    },\n                    {\n                        \"address\": \"256-639\",\n                        \"size\": \"384\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    }\n                ], \n                \"A2\":[\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**DIAGNOSTIC AND CONTROL FIELDS**\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"0-1\",\n                        \"size\": \"2\",\n                        \"name\": \"Temp High Alarm\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToTemp\"\n                    },\n                    {\n                        \"address\": \"2-3\",\n                        \"size\": \"2\",\n                        \"name\": \"Temp Low Alarm\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToTemp\"\n                    },\n                    {\n                        \"address\": \"4-5\",\n                        \"size\": \"2\",\n                        \"name\": \"Temp High Warning\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToTemp\"\n                    },\n                    {\n                        \"address\": \"6-7\",\n                        \"size\": \"2\",\n                        \"name\": \"Temp Low Warning\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToTemp\"\n                    },\n                    {\n                        \"address\": \"8-9\",\n                        \"size\": \"2\",\n                        \"name\": \"Voltage High Alarm\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToVolt\"\n                    },\n                    {\n                        \"address\": \"10-11\",\n                        \"size\": \"2\",\n                        \"name\": \"Voltage Low Alarm\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToVolt\"\n                    },\n                    {\n                        \"address\": \"12-13\",\n                        \"size\": \"2\",\n                        \"name\": \"Voltage High Warning\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToVolt\"\n                    },\n                    {\n                        \"address\": \"14-15\",\n                        \"size\": \"2\",\n                        \"name\": \"Voltage Low Warning\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToVolt\"\n                    },\n                    {\n                        \"address\": \"16-17\",\n                        \"size\": \"2\",\n                        \"name\": \"Bias High Alarm\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToMilliAmpere\"\n                    },\n                    {\n                        \"address\": \"18-19\",\n                        \"size\": \"2\",\n                        \"name\": \"Bias Low Alarm\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToMilliAmpere\"\n                    },\n                    {\n                        \"address\": \"20-21\",\n                        \"size\": \"2\",\n                        \"name\": \"Bias High Warning\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToMilliAmpere\"\n                    },\n                    {\n                        \"address\": \"22-23\",\n                        \"size\": \"2\",\n                        \"name\": \"Bias Low Warning\",\n                        \"description\": \"\",\n                        \"parse\": \"hexToMilliAmpere\"\n                    },\n                    {\n                        \"address\": \"24-25\",\n                        \"size\": \"2\",\n                        \"name\": \"TX Power High Alarm\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"26-27\",\n                        \"size\": \"2\",\n                        \"name\": \"TX Power Low Alarm\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"28-29\",\n                        \"size\": \"2\",\n                        \"name\": \"TX Power High Warning\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"30-31\",\n                        \"size\": \"2\",\n                        \"name\": \"TX Power Low Warning\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"32-33\",\n                        \"size\": \"2\",\n                        \"name\": \"RX Power High Alarm\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"34-35\",\n                        \"size\": \"2\",\n                        \"name\": \"RX Power Low Alarm\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"36-37\",\n                        \"size\": \"2\",\n                        \"name\": \"RX Power High Warning\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"38-39\",\n                        \"size\": \"2\",\n                        \"name\": \"RX Power Low Warning\",\n                        \"description\": \"Value expressed in watts subunits\",\n                        \"parse\": \"hex_suWTo_dBm\"\n                    },\n                    {\n                        \"address\": \"40-45\",\n                        \"size\": \"6\",\n                        \"name\": \"MAC address\",\n                        \"description\": \"Contains the mac address of the SFP, it could also be empty\",\n                        \"parse\": \"hexToMac\"\n                    },\n                    {\n                        \"address\": \"46-55\",\n                        \"size\": \"10\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    },\n                    {\n                        \"address\": \"56-59\",\n                        \"size\": \"4\",\n                        \"name\": \"RX_PWR(4) Calibration\",\n                        \"description\": \"4th order RSSI calibration coefficient\"\n                    },\n                    {\n                        \"address\": \"60-63\",\n                        \"size\": \"4\",\n                        \"name\": \"RX_PWR(3) Calibration\",\n                        \"description\": \"3rd order RSSI calibration coefficient\"\n                    },\n                    {\n                        \"address\": \"64-67\",\n                        \"size\": \"4\",\n                        \"name\": \"RX_PWR(2) Calibration\",\n                        \"description\": \"2nd order RSSI calibration coefficient\"\n                    },\n                    {\n                        \"address\": \"68-71\",\n                        \"size\": \"4\",\n                        \"name\": \"RX_PWR(1) Calibration\",\n                        \"description\": \"1st order RSSI calibration coefficient\"\n                    },\n                    {\n                        \"address\": \"72-75\",\n                        \"size\": \"4\",\n                        \"name\": \"RX_PWR(0) Calibration\",\n                        \"description\": \"0th order RSSI calibration coefficient\"\n                    },\n                    {\n                        \"address\": \"76-77\",\n                        \"size\": \"2\",\n                        \"name\": \"TX_I(Slope) Calibration\",\n                        \"description\": \"Slope for Bias calibration\"\n                    },\n                    {\n                        \"address\": \"78-79\",\n                        \"size\": \"2\",\n                        \"name\": \"TX_I(Offset) Calibration\",\n                        \"description\": \"Offset for Bias calibration\"\n                    },\n                    {\n                        \"address\": \"80-81\",\n                        \"size\": \"2\",\n                        \"name\": \"TX_PWR(Slope) Calibration\",\n                        \"description\": \"Slope for TX Power calibration\"\n                    },\n                    {\n                        \"address\": \"82-83\",\n                        \"size\": \"2\",\n                        \"name\": \"TX_PWR(Offset) Calibration\",\n                        \"description\": \"Offset for TX Power calibration\"\n                    },\n                    {\n                        \"address\": \"84-85\",\n                        \"size\": \"2\",\n                        \"name\": \"T(Slope) Calibration\",\n                        \"description\": \"Slope for Temperature calibration\"\n                    },\n                    {\n                        \"address\": \"86-87\",\n                        \"size\": \"2\",\n                        \"name\": \"T(Offset) Calibration\",\n                        \"description\": \"Offset for Temperature calibration, in units of 256ths °C\"\n                    },\n                    {\n                        \"address\": \"88-89\",\n                        \"size\": \"2\",\n                        \"name\": \"V(Slope) Calibration\",\n                        \"description\": \"Slope for VCC calibration\"\n                    },\n                    {\n                        \"address\": \"90-91\",\n                        \"size\": \"2\",\n                        \"name\": \"V(Offset) Calibration\",\n                        \"description\": \"Offset for VCC calibration\"\n                    },\n                    {\n                        \"address\": \"92-94\",\n                        \"size\": \"3\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    },\n                    {\n                        \"address\": \"95\",\n                        \"size\": \"1\",\n                        \"name\": \"CC_DMI\",\n                        \"description\": \"Check code for Base Diagnostic Fields (addresses 0 to 94)\"\n                    },\n                    {\n                        \"address\": \"96\",\n                        \"size\": \"1\",\n                        \"name\": \"Temperature MSB\",\n                        \"description\": \"Internally measured module temperature\"\n                    },\n                    {\n                        \"address\": \"97\",\n                        \"size\": \"1\",\n                        \"name\": \"Temperature LSB\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"98\",\n                        \"size\": \"1\",\n                        \"name\": \"Vcc MSB\",\n                        \"description\": \"Internally measured supply voltage in transceiver\"\n                    },\n                    {\n                        \"address\": \"99\",\n                        \"size\": \"1\",\n                        \"name\": \"Vcc LSB\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"100\",\n                        \"size\": \"1\",\n                        \"name\": \"TX Bias MSB\",\n                        \"description\": \"Internally measured TX Bias Current\"\n                    },\n                    {\n                        \"address\": \"101\",\n                        \"size\": \"1\",\n                        \"name\": \"TX Bias LSB\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"102\",\n                        \"size\": \"1\",\n                        \"name\": \"TX Power MSB\",\n                        \"description\": \"Measured TX output power\"\n                    },\n                    {\n                        \"address\": \"103\",\n                        \"size\": \"1\",\n                        \"name\": \"TX Power LSB\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"104\",\n                        \"size\": \"1\",\n                        \"name\": \"RX Power MSB\",\n                        \"description\": \"Measured RX input power\"\n                    },\n                    {\n                        \"address\": \"105\",\n                        \"size\": \"1\",\n                        \"name\": \"RX Power LSB\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"106-109\",\n                        \"size\": \"4\",\n                        \"name\": \"Optional Diagnostics\",\n                        \"description\": \"Monitor Data for Optional Laser temperature and TEC current\"\n                    },\n                    {\n                        \"address\": \"110\",\n                        \"size\": \"1\",\n                        \"name\": \"Status/Control\",\n                        \"description\": \"Optional Status and Control Bits\",\n                        \"parse\": \"table_real_time_diagnostic_and_control\"\n                    },\n                    {\n                        \"address\": \"111\",\n                        \"size\": \"1\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    },\n                    {\n                        \"address\": \"112-113\",\n                        \"size\": \"2\",\n                        \"name\": \"Alarm Flags\",\n                        \"description\": \"Diagnostic Alarm Flag Status Bits\",\n                        \"parse\": \"table_alarm_and_warning\"\n                    },\n                    {\n                        \"address\": \"114\",\n                        \"size\": \"1\",\n                        \"name\": \"Tx Input EQ control\",\n                        \"description\": \"Tx Input equalization level control\",\n                        \"parse\": \"hex_to_dBm\"\n\n                    },\n                    {\n                        \"address\": \"115\",\n                        \"size\": \"1\",\n                        \"name\": \"Rx Out Emphasis control\",\n                        \"description\": \"Rx Output emphasis level control\",\n                        \"parse\": \"hex_to_dBm\"\n                    },\n                    {\n                        \"address\": \"116-117\",\n                        \"size\": \"2\",\n                        \"name\": \"Warning Flags\",\n                        \"description\": \"Diagnostic Warning Flag Status Bits\",\n                        \"parse\": \"table_alarm_and_warning\"\n                    },\n                    {\n                        \"address\": \"118-119\",\n                        \"size\": \"2\",\n                        \"name\": \"Ext Status/Control\",\n                        \"description\": \"Extended module control and status bytes\"\n                    },\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**GENERAL USE FIELDS**\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"120-126\",\n                        \"size\": \"7\",\n                        \"name\": \"Vendor Specific\",\n                        \"description\": \"Vendor specific memory addresses\"\n                    },\n                    {\n                        \"address\": \"127\",\n                        \"size\": \"1\",\n                        \"name\": \"Table Select\",\n                        \"description\": \"Optional Page Select\"\n                    },\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**USER WRITABLE EEPROM**\",\n                        \"description\": \"\"\n                    },\n                    {\n                        \"address\": \"128-190\",\n                        \"size\": \"63\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    },\n                    {\n                        \"address\": \"191-214\",\n                        \"size\": \"24\",\n                        \"name\": \"GPON LOID or PLOAM\",\n                        \"description\": \"GPON Logical ONU ID or PLOAM, depends on `GPON LOID/PLOAM switch`\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"215-231\",\n                        \"size\": \"17\",\n                        \"name\": \"GPON LPWD\",\n                        \"description\": \"GPON Logical Password\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"232\",\n                        \"size\": \"1\",\n                        \"name\": \"GPON LOID/PLOAM switch\",\n                        \"description\": \"`0x01` to enable LOID, `0x02` to enable PLOAM\"\n                    },\n                    {\n                        \"address\": \"233-240\",\n                        \"size\": \"8\",\n                        \"name\": \"GPON SN\",\n                        \"description\": \"GPON Serial Number (ME 256)\",\n                        \"parse\": \"hexToSerial\"\n                    },\n                    {\n                        \"address\": \"241-247\",\n                        \"size\": \"7\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    },\n                    {\n                        \"address\": \"248-255\",\n                        \"size\": \"8\",\n                        \"name\": \"Vendor Control\",\n                        \"description\": \"Vendor specific control functions\"\n                    },\n                    {\n                        \"address\": \"\",\n                        \"size\": \"\",\n                        \"name\": \"**EXTRA EEPROM FIELDS**\",\n                        \"description\": \"**Not exposed to I2C interface**\"\n                    },\n                    {\n                        \"address\": \"256-383\",\n                        \"size\": \"128\",\n                        \"name\": \"Unknown vendor specific\",\n                        \"description\": \"Probably not used in current SFPs\"\n                    },\n                    {\n                        \"address\": \"384-389\",\n                        \"size\": \"6\",\n                        \"name\": \"MAC address (Huawei Rooted Firmware)\",\n                        \"description\": \"Contains the mac address of the SFP, probably it used only in Huawei Rooted Firmware\",\n                        \"parse\":\"hexToMac\"\n                    },\n                    {\n                        \"address\": \"390-511\",\n                        \"size\": \"122\",\n                        \"name\": \"Unknown vendor specific\",\n                        \"description\": \"Probably not used in current SFPs\"\n                    },\n                    {\n                        \"address\": \"512-531\",\n                        \"size\": \"20\",\n                        \"name\": \"GPON Equipment ID\",\n                        \"description\": \"GPON Equipment ID (ME 257), may not work in some firmwares\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"532-535\",\n                        \"size\": \"4\",\n                        \"name\": \"GPON Vendor ID\",\n                        \"description\": \"GPON Vendor ID (ME 256 and more), may not work in some firmware\",\n                        \"parse\": \"hexToAscii\"\n                    },\n                    {\n                        \"address\": \"536-639\",\n                        \"size\": \"104\",\n                        \"name\": \"Reserved\",\n                        \"description\": \"Reserved\"\n                    }\n                ]\n                },\n            eeprom_switch: \"A0\"\n        }\n    },\n    props: ['type'],\n    computed: {\n        revision: {\n            get() {\n                if (this.eeprom_switch === \"A0\") {\n                    var rev = this.getPart(94, 94);\n                    return rev !== \"00\" ? this.table_compliance(rev).slice(0, -1) ?? \"SFF-8472\" : \"SFF-8472\";\n                }\n                return \"SFF-8472\";\n            }\n        },\n        eeprom: {\n            get() {\n                if(this.type === 'eeprom-lantiq' || this.type === 'eeprom-rooted-edit') {\n                    if(this.eeprom_decode){\n                        var lantiq_new = (this.eeprom_decode.join('').match(/.{1,90}/g) ?? []).map(it => this.hexToBase64(it));\n                        lantiq_new.unshift(this.lantiq_0);\n                        lantiq_new.push(...this.lantiq_last);\n                        return lantiq_new.join('@'); \n                    }\n                    return '';\n                } else {\n                    return this.raw;\n                }\n            },\n            set(val) {\n                this.raw = val;\n                if(this.type === 'eeprom-lantiq' || this.type === 'eeprom-rooted-edit') {\n                    var lantiq_array = val.split('@');\n                    this.lantiq_0 = lantiq_array.shift();\n                    if(this.lantiq_0.includes(\"sfp_a2_info\")) {\n                        this.eeprom_switch = \"A2\";\n                    }\n                    else if(this.lantiq_0.includes(\"sfp_a0_low_128\")) {\n                        this.eeprom_switch = \"A0\";\n                    }\n                    this.lantiq_last = lantiq_array.slice(-2);\n                    var lantiq_decode = lantiq_array.map(it => this.base64ToHex(it)).join('');\n                    this.eeprom_decode = [...lantiq_decode];\n                }\n                else if(this.type === 'eeprom-ethtool') {\n                    var ethtool_map = Object.fromEntries(val.split('\\n').filter(it => it.startsWith(\"0x\")).map(it => {  var [key, value] = it.split(/[: ]+(.*)/s);\n                                                                                                                        key = parseInt(key, 16);\n                                                                                                                        value = value.replace(/\\s+/g, '');\n                                                                                                                        value = [...value];\n                                                                                                                        return [key,value] }));\n                    var eeprom_decode = [];\n                    var max = Math.max(...Object.keys(ethtool_map).map(it => parseInt(it)));\n                    for(var i = 0; i < max; i+=16) {\n                        eeprom_decode.push(...(ethtool_map[i] ?? Array.from({length: 32}, () => 0)));\n                    };\n                    this.eeprom_decode = [...eeprom_decode];\n                    var ethtool_0 = val.split('\\n')[0];\n                    const conditions = {\n                        \"A0\": ['-m', '--dump-module-eeprom', '--module-info'],\n                        \"A2\": ['-e', '--eeprom-dump']\n                    };\n                    for (const [key, value] of Object.entries(conditions)) {\n                        if (value.some(el => ethtool_0.includes(el))) {\n                            this.eeprom_switch = key;\n                            break;\n                        }\n                    }\n                }\n            },\n        },\n        eeprom_json: {\n            get() {\n                var finalArray = [...this.eeprom_table[this.eeprom_switch]];\n                finalArray.map(it => {\n                    if(it.address) {\n                        var addr = it.address.split('-').map(x => parseInt(x));\n                        it.value = this.getPart(addr[0], addr[addr.length -1])\n                        if(it.parse) it.human = this[it.parse ?? ((it) => { console.log(`no function find for ${it.parse}`)})](it.value)\n                    }\n                    return it;\n                });\n                return finalArray;\n            }\n        },\n        serial: {\n            get() {\n                return this.getPart(233, 240);\n            },\n            set(value) {\n                if(value.length == 16)\n                    this.setPart(233, 240, value);\n            }\n        },\n        serial_hex: {\n            get() {\n                if(this.serial) return this.addHexPrefix(this.serial);\n            },\n            set(value) {\n                value = this.stripHexPrefix(value);\n                if(value.length == 16)\n                    this.serial = value;\n            }\n        },\n        serial_ascii: {\n            get() {\n                if(this.serial) return this.hexToSerial(this.serial);\n            },\n            set(value) {\n                if(value.length == 12)\n                    this.serial = this.asciiToHex(value.substring(0,4))+value.substring(4);\n            }\n        },\n        ploam: {\n            get() {\n                if(this.loidPloamSwitch === \"02\")\n                    return this.getPart(191, 214);\n            },\n            set(value) {\n                if(this.loidPloamSwitch === \"02\")\n                    this.setPart(191, 214, value);\n            }\n        },\n        ploam_hex: {\n            get() {\n                if(this.ploam) return this.addHexPrefix(this.ploam.substring(0,20));\n            },\n            set(value) {\n                this.ploam = this.stripHexPrefix(value);\n            }\n        },\n        ploam_ascii: {\n            get() {\n                if(this.ploam) return this.hexToAscii(this.ploam.substring(0,20));\n            },\n            set(value) {\n                if(value.length <= 10)\n                    this.ploam = this.asciiToHex(value);\n            }\n        },\n        loid: {\n            get() {\n                if(this.loidPloamSwitch === \"01\")\n                    return this.getPart(191, 214);\n            },\n            set(value) {\n                if(this.loidPloamSwitch === \"01\")\n                    this.setPart(191, 214, value);\n            }\n        },\n        loid_hex: {\n            get() {\n                if(this.loid) return this.addHexPrefix(this.loid.substring(0,20));\n            },\n            set(value) {\n                this.loid = this.stripHexPrefix(value);\n            }\n        },\n        loid_ascii: {\n            get() {\n                if(this.loid) return this.hexToAscii(this.loid.substring(0,20));\n            },\n            set(value) {\n                if(value.length <= 10)\n                    this.loid = this.asciiToHex(value);\n            }\n        },\n        lopw: {\n            get() {\n                if(this.loidPloamSwitch === \"01\")\n                    return this.getPart(215, 231);\n            },\n            set(value) {\n                if(this.loidPloamSwitch === \"01\")\n                    this.setPart(215, 231, value);\n            }\n        },\n        lopw_hex: {\n            get() {\n                if(this.lopw) return this.hexToAscii(this.lopw.substring(0,20));\n            },\n            set(value) {\n                this.lopw = this.stripHexPrefix(value);\n            }\n        },\n        lopw_ascii: {\n            get() {\n                if(this.lopw) return this.hexToAscii(this.lopw.substring(0,20));\n            },\n            set(value) {\n                if(value.length <= 10)\n                    this.lopw = this.asciiToHex(value);\n            }\n        },\n        loidPloamSwitch: {\n            get() {\n                return this.getPart(232, 232);\n            },\n            set(value) {\n                this.setPart(232, 232, value);\n            }\n        },\n        equipmentID: {\n            get() {\n                return this.getPart(512, 531);\n            },\n            set(value) {\n                this.setPart(512, 531, value);\n            }\n        },\n        vendorID: {\n            get() {\n                return this.getPart(532, 535);\n            },\n            set(value) {\n                this.setPart(532, 535, value);\n            }\n        },\n        mac_rooted: {\n            get() {\n                return this.getPart(384, 389);\n            },\n            set(value) {\n                this.setPart(384, 389, value);\n            }\n        },\n        mac_prettier: {\n            get() {\n                return this.hexToMac(this.mac_rooted);\n            },\n            set(value) {\n                if(value.length == 12) {\n                    this.mac = value;\n                }\n                else if(value.length == 14) {\n                    this.mac = stripHexPrefix(value);\n                }\n                else if(value.length == 17) {\n                    this.mac = value.split(value[2]).join('');\n                }\n            }\n        }\n    },\n    methods: {\n        getPart: function (startIndex, endIndex) {\n            return this.eeprom_decode?.slice(startIndex * 2, (endIndex + 1) * 2)?.join('');\n        },\n        setPart: function (startIndex, endIndex, value) {\n            let calcLength = (endIndex + 1 - startIndex) * 2;\n            if(!value) {\n                return;\n            }\n            if (value.length < calcLength) {\n                value += '0'.repeat(calcLength - value.length);\n            } else if(value.length > calcLength) {\n                value = value.substring(0, calcLength);\n            }\n            this.eeprom_decode.splice(startIndex * 2, calcLength, ...[...value]);\n        },\n        isHexPrefixed: function(str, prefix = '0x') {\n            if (typeof str !== 'string') {\n            throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n            }\n            return str.slice(0, 2) === prefix;\n        },\n        stripHexPrefix: function(str, prefix = '0x') {\n            if (typeof str !== 'string') {\n                return str;\n            }\n            return this.isHexPrefixed(str) ? str.slice(prefix.length) : str;\n        },\n        chunk: function(str) {\n            return str?.match(/../g);\n        },\n        hexToBase64: function (hexStr) {\n            return btoa([...hexStr].reduce((acc, _, i) => acc += !(i - 1 & 1) ? String.fromCharCode(parseInt(hexStr.substring(i - 1, i + 1), 16)) : '', ''));\n        },\n        base64ToHex: function(base64Value) {\n            try {\n                return [...atob(base64Value)].map(c=> c.charCodeAt(0).toString(16).padStart(2,0)).join('');\n            } catch { return ''; }\n        },\n        parseInt2complement: function(bitstring, bitcount)\n        {\n            var value = parseInt(bitstring, 2);\n\n            if ((value & (1<<(bitcount-1))) > 0) {\n                value = value - (1<<(bitcount));\n            }\n            return value;\n        },\n        reverseEndian: function(hex) {\n            return hex ? this.chunk(hex).reverse().join('') : \"\";\n        },\n        hexToTemp: function(hex) {\n            return hex ? `${this.parseInt2complement((parseInt(this.reverseEndian(hex), 16)).toString(2), 8)}℃` : \"\";\n        },\n        hexToVolt: function(hex) {\n            return hex ? `${parseInt(hex, 16) / 10000}V` : \"\";\n        },\n        hexToMilliAmpere: function(hex) {\n            return hex ? `${parseInt(hex, 16) / 10000}mA` : \"\";\n        },\n        hexToMac: function(hex) {\n            return hex ? this.chunk(hex).join(':') : \"\";\n        },\n        hex_to_dBm: function(hex) {\n            return hex ? `${parseInt(hex, 16)}dBm` : \"\";\n        },\n        hex_suWTo_dBm: function(hex) {\n            return hex ? `${(10 * Math.log10(parseInt(hex, 16) / 10000)).toFixed(2)}dBm` : \"\";\n        },\n        hex_dBmTo_mw: function(hex) {\n            return hex ? Math.pow(10, parseInt(hex, 16) / 10) : \"\";\n        },\n        hexToAscii: function (hex) {\n            return hex ? this.chunk(hex)?.map(el => String.fromCharCode(parseInt(el, 16)))?.join('')?.replace(/\\0/g, '') : \"\";\n        },\n        hexToSerial: function (hex) {\n            return hex ? this.hexToAscii(hex.substring(0,8))+hex.substring(8) : \"\";\n        },\n        hexTo_km: function(hex) {\n            return hex ? `${parseInt(hex, 16)}km` : \"\";\n        },\n        hexTo100m: function(hex) {\n            return hex ? `${parseInt(hex, 16) / 10}km` : \"\";\n        },\n        hexTo10m: function(hex) {\n            return hex ? `${parseInt(hex, 16) * 10}m` : \"\";\n        },\n        hexTo_m: function(hex) {\n            return hex ? `${parseInt(hex, 16)}m` : \"\";\n        },\n        hexTo_nm: function(hex) {\n            return hex ? `${parseInt(hex, 16)}nm` : \"\";\n        },\n        hexToRate: function(hex) {\n            return hex ? `${parseInt(hex, 16) / 10}Gbps` : \"\";\n        },\n        flagDecoder: function(element, table, not_table) {\n            var list = []\n            var flags = parseInt(element, 16)\n            for(const [key, value] of Object.entries(table)) {\n                if(flags & key) {\n                    list.push(value)\n                } else if(not_table && not_table[key]) {\n                    list.push(not_table[key])\n                }\n            }\n            return list;\n        },\n        table_identifier_values: function (hex) {\n            var table = {\n                \"01\":\"GBIC\",\n                \"02\":\"Module soldered to motherboard (ex: SFF)\",\n                \"03\":\"SFP/SFP+/SFP28\"\n            }\n            return hex ?  table[hex] ?? `See ${this.revision} Table 3.2` : \"\";\n        },\n        table_phy_device_identifier_value: function (hex) {\n            var table = {\n                \"00\":\"GBIC definition is not specified or the GBIC definition is not compliant with a defined MOD_DEF. See product specification for details\",\n                \"01\":\"GBIC is compliant with MOD_DEF 1\",\n                \"02\":\"GBIC is compliant with MOD_DEF 2\",\n                \"03\":\"GBIC is compliant with MOD_DEF 3\",\n                \"04\":\"GBIC/SFP function is defined by serial ID only\",\n                \"05\":\"GBIC is compliant with MOD_DEF 5\",\n                \"06\":\"GBIC is compliant with MOD_DEF 6\",\n                \"07\":\"GBIC is compliant with MOD_DEF 7\",\n            }\n            return hex ?  table[hex] ?? `See ${this.revision} Table 3.3` : \"\";\n        },\n        table_connector_value: function (hex) {\n            var table = {\n                \"00\":\"Unknown or unspecified\",\n                \"01\":\"SC (Subscriber Connector)\",\n                \"02\":\"Fibre Channel Style 1 copper connector\",\n                \"03\":\"Fibre Channel Style 2 copper connector\",\n                \"04\":\"BNC/TNC (Bayonet/Threaded Neill-Concelman)\",\n                \"05\":\"Fibre Channel coax headers\",\n                \"06\":\"Fiber Jack\",\n                \"07\":\"LC (Lucent Connector)\",\n                \"08\":\"MT-RJ (Mechanical Transfer - Registered Jack)\",\n                \"09\":\"MU (Multiple Optical)\",\n                \"21\":\"Copper pigtail\",\n                \"22\":\"RJ45 (Registered Jack)\"\n            }\n            return hex ?  table[hex] ?? `See ${this.revision} Table 3.4` : \"\";\n        },\n        table_encoding_value: function (hex) {\n            var table = {\n                \"00\":\"Unspecified\",\n                \"01\":\"8B/10B\",\n                \"02\":\"4B/5B\",\n                \"03\":\"NRZ\",\n                \"04\":\"Manchester\",\n                \"05\":\"SONET Scrambled\",\n                \"06\":\"64B/66B\",\n            }\n            return hex ?  table[hex] ?? `See ${this.revision} Table 3.6` : \"\";\n        },\n        table_real_time_diagnostic_and_control: function(hex) {\n            var table = {\n                128:\"TX Disable State\",\n                64:\"Soft TX Disable\",\n                32:\"RS(1) State\",\n                16:\"Rate Select State\",\n                8:\"Soft Rate Select\",\n                4:\"TX Fault\",\n                2:\"LOS\",\n                1:\"Data_Ready_Bar\"\n            }\n            return hex ?  this.flagDecoder(hex, table)?.join(', ') : \"\";\n        },\n        table_alarm_and_warning: function(hex) {\n            var table = [{\n                128:\"Temp High\",\n                64:\"Temp Low\",\n                32:\"Vcc High\",\n                16:\"Vcc Low\",\n                8:\"TX Bias High\",\n                4:\"TX Bias Low\",\n                2:\"TX Power High\",\n                1:\"TX Power Low\"\n            },{\n                128:\"RX Power High\",\n                64:\"RX Power Low\",\n            }]\n            return hex ?  this.chunk(hex)?.flatMap((element, index) => this.flagDecoder(element, table[index]))?.join(', ') : \"\";          \n        },\n        table_diagnostic_monitoring_type: function(hex) {\n            var table = {\n                64:\"Digital diagnostic monitoring implemented\",\n                32:\"Internally calibrated\",\n                16:\"Externally calibrated\",\n                8:\"Received power measurement type: average power\",\n                4:\"Address change required\"\n            }\n            var not_table = {\n                128:\"Reserved for legacy diagnostic implementations\",\n                8:\"Received power measurement type: OMA\",\n                4:\"Address change required\"\n            }\n            return hex ?  this.flagDecoder(hex, table, not_table)?.join(', ') : \"\";\n        },\n        table_enhanced_options: function(hex) {\n            var table = {\n                128:\"Alarm/warning flags implemented for all monitored quantities\",\n                64:\"Soft TX_DISABLE control and monitoring implemented\",\n                32:\"Soft TX_FAULT monitoring implemented\",\n                16:\"Soft RX_LOS monitoring implemented\",\n                8:\"Soft RATE_SELECT control and monitoring implemented\",\n                4:\"Application Select control implemented per SFF-8079\",\n                2:\"Rate Select control implemented per SFF-8431\"\n            }\n            return hex ?  this.flagDecoder(hex, table)?.join(', ') : \"\";\n        },\n        table_compliance: function(hex) {\n            var table = {\n                \"00\":\"Digital diagnostic functionality not included or undefined.\",\n                \"01\":\"Rev 9.3 of SFF-8472.\",\n                \"02\":\"Rev 9.5 of SFF-8472.\",\n                \"03\":\"Rev 10.2 of SFF-8472.\",\n                \"04\":\"Rev 10.4 of SFF-8472.\",\n                \"05\":\"Rev 11.0 of SFF-8472.\",\n                \"06\":\"Rev 11.3 of SFF-8472.\",\n                \"07\":\"Rev 11.4 of SFF-8472.\",\n                \"08\":\"Rev 12.3 of SFF-8472.\",\n                \"09\":\"Rev 12.4 of SFF-8472.\",\n            }\n            return hex ?  table[hex] ?? \"\" : \"\";\n        },\n        table_extended_specification_compliance_codeds: function(hex) {\n            var table = {\n                \"00\":\"Unspecified.\",\n                \"01\":\"100G AOC (Active Optical Cable), retimed or 25GAUI C2M AOC. Providing a worst BER of 5 × 10-5.\",\n                \"02\":\"100GBASE-SR4 or 25GBASE-SR.\",\n                \"03\":\"100GBASE-LR4 or 25GBASE-LR.\",\n                \"04\":\"100GBASE-ER4 or 25GBASE-ER.\",\n                \"05\":\"100GBASE-SR10.\",\n                \"06\":\"100G CWDM4.\",\n                \"07\":\"100G PSM4 Parallel SMF.\",\n                \"08\":\"100G ACC (Active Copper Cable), retimed or 25GAUI C2M ACC. Providing a worst BER of 5 × 10-5.\",\n                \"09\":\"Obsolete (assigned before 100G CWDM4 MSA required FEC).\",\n                \"0A\":\"Reserved.\",\n                \"0B\":\"100GBASE-CR4, 25GBASE-CR CA-25G-L or 50GBASE-CR2 with RS (Clause91) FEC.\",\n                \"0C\":\"25GBASE-CR CA-25G-S or 50GBASE-CR2 with BASE-R (Clause 74 Fire code) FEC.\",\n                \"0D\":\"25GBASE-CR CA-25G-N or 50GBASE-CR2 with no FEC.\",\n                \"0E\":\"10 Mb/s Single Pair Ethernet (802.3cg, Clause 146/147, 1000 m copper).\",\n                \"10\":\"40GBASE-ER4.\",\n                \"11\":\"4 x 10GBASE-SR.\",\n                \"12\":\"40G PSM4 Parallel SMF.\",\n                \"13\":\"G959.1 profile P1I1-2D1 (10709 MBd, 2km, 1310 nm SM).\",\n                \"14\":\"G959.1 profile P1S1-2D2 (10709 MBd, 40km, 1550 nm SM).\",\n                \"15\":\"G959.1 profile P1L1-2D2 (10709 MBd, 80km, 1550 nm SM).\",\n                \"16\":\"10GBASE-T with SFI electrical interface.\",\n                \"17\":\"100G CLR4.\",\n                \"18\":\"100G AOC, retimed or 25GAUI C2M AOC. Providing a worst BER of 10-12 or below.\",\n                \"19\":\"100G ACC, retimed or 25GAUI C2M ACC. Providing a worst BER of 10-12 or below.\",\n                \"1A\":\"100GE-DWDM2 (DWDM transceiver using 2 wavelengths on a 1550 nm DWDM grid with a reach up to 80 km).\",\n                \"1B\":\"100G 1550nm WDM (4 wavelengths).\",\n                \"1C\":\"10GBASE-T Short Reach (30 meters).\",\n                \"1D\":\"5GBASE-T.\",\n                \"1E\":\"2.5GBASE-T.\",\n                \"1F\":\"40G SWDM4.\",\n                \"20\":\"100G SWDM4.\",\n                \"21\":\"100G PAM4 BiDi.\",\n                \"37\":\"10GBASE-BR (Clause 158).\",\n                \"38\":\"25GBASE-BR (Clause 159).\",\n                \"39\":\"50GBASE-BR (Clause 160).\",\n                \"22\":\"4WDM-10 MSA (10km version of 100G CWDM4 with same RS(528,514) FEC in host system).\",\n                \"23\":\"4WDM-20 MSA (20km version of 100GBASE-LR4 with RS(528,514) FEC in host system).\",\n                \"24\":\"4WDM-40 MSA (40km reach with APD receiver and RS(528,514) FEC in host system).\",\n                \"25\":\"100GBASE-DR (Clause 140), CAUI-4 (no FEC).\",\n                \"26\":\"100G-FR or 100GBASE-FR1 (Clause 140), CAUI-4 (no FEC on host interface).\",\n                \"27\":\"100G-LR or 100GBASE-LR1 (Clause 140), CAUI-4 (no FEC on host interface).\",\n                \"28\":\"100GBASE-SR1 (802.3, Clause 167), CAUI-4 (no FEC on host interface).\",\n                \"3A\":\"100GBASE-VR1 (802.3, Clause 167), CAUI-4 (no FEC on host interface).\",\n                \"29\":\"100GBASE-SR1, 200GBASE-SR2 or 400GBASE-SR4 (802.3, Clause 167).\",\n                \"36\":\"100GBASE-VR1, 200GBASE-VR2 or 400GBASE-VR4 (802.3, Clause 167).\",\n                \"2A\":\"100GBASE-FR1 (802.3, Clause 140) or 400GBASE-DR4-2 (P802.3df, Clause 124).\",\n                \"2B\":\"100GBASE-LR1 (802.3, Clause 140).\",\n                \"2C\":\"100G-LR1-20 MSA, CAUI-4 (no FEC on host interface).\",\n                \"2D\":\"100G-ER1-30 MSA, CAUI-4 (no FEC on host interface).\",\n                \"2E\":\"100G-ER1-40 MSA, CAUI-4 (no FEC on host interface).\",\n                \"2F\":\"100G-LR1-20 MSA.\",\n                \"34\":\"100G-ER1-30 MSA.\",\n                \"35\":\"100G-ER1-40 MSA.\",\n                \"30\":\"Active Copper Cable with 50GAUI, 100GAUI-2 or 200GAUI-4 C2M. Providing a worst BER of 10-6 or below.\",\n                \"31\":\"Active Optical Cable with 50GAUI, 100GAUI-2 or 200GAUI-4 C2M. Providing a worst BER of 10-6 or below.\",\n                \"32\":\"Active Copper Cable with 50GAUI, 100GAUI-2 or 200GAUI-4 C2M. Providing a worst BER of 2.6x10-4 for ACC, 10-5 for AUI, or below.\",\n                \"33\":\"Active Optical Cable with 50GAUI, 100GAUI-2 or 200GAUI-4 C2M. Providing a worst BER of 2.6x10-4 for AOC, 10-5 for AUI, or below.\",\n                \"3F\":\"100GBASE-CR1, 200GBASE-CR2 or 400GBASE-CR4 (P802.3ck, Clause 162).\",\n                \"40\":\"50GBASE-CR, 100GBASE-CR2, or 200GBASE-CR4.\",\n                \"41\":\"50GBASE-SR, 100GBASE-SR2, or 200GBASE-SR4.\",\n                \"42\":\"50GBASE-FR or 200GBASE-DR4.\",\n                \"4A\":\"50GBASE-ER (IEEE 802.3, Clause 139).\",\n                \"43\":\"200GBASE-FR4.\",\n                \"44\":\"200G 1550 nm PSM4.\",\n                \"45\":\"50GBASE-LR.\",\n                \"46\":\"200GBASE-LR4.\",\n                \"47\":\"400GBASE-DR4 (802.3, Clause 124), 400GAUI-4 C2M (Annex 120G).\",\n                \"48\":\"400GBASE-FR4 (802.3, Clause 151).\",\n                \"49\":\"400GBASE-LR4-6 (802.3, Clause 151).\",\n                \"4B\":\"400G-LR4-10.\",\n                \"4C\":\"400GBASE-ZR (P802.3cw, Clause 156).\",\n                \"7F\":\"256GFC-SW4 (FC-PI-7P).\",\n                \"80\":\"64GFC (FC-PI-7).\",\n                \"81\":\"128GFC (FC-PI-8).\"\n            }\n            return hex ?  table[hex] ?? \"\" : \"\";\n        },\n        asciiToHex: function(str) {\n            return ([...str].map((_, n) => Number(str.charCodeAt(n)).toString(16)).join(''));\n        },\n        addHexPrefix: function(str, prefix = '0x') {\n            if(this.isHexPrefixed(str, prefix)) return str;\n            return `${prefix}${str}`;\n        }\n    }\n};\n</script>\n<style scoped>\ntable td {\n    overflow-wrap: break-word;\n    word-wrap: break-word;\n    word-break: break-word;\n}\n</style>"
  },
  {
    "path": "assets/js/vue-eeprom.js",
    "content": "const { createApp } = Vue;\nconst { loadModule } = window['vue3-sfc-loader'];\nconst options = {\n  moduleCache: {\n    vue: Vue,\n  },\n  getFile(url) {\n    return fetch(url).then((resp) =>\n      resp.ok ? resp.text() : Promise.reject(resp)\n    );\n  },\n  addStyle(styleStr) {\n    const style = document.createElement('style');\n    style.textContent = styleStr;\n    const ref = document.head.getElementsByTagName('style')[0] || null;\n    document.head.insertBefore(style, ref);\n  },\n  log(type, ...args) {\n    console.log(type, ...args);\n  },\n};\nconst app = createApp({\n  components: {\n    VueLantiqEeprom: Vue.defineAsyncComponent(() =>\n      loadModule('/assets/js/vue/vue-lantiq-eeprom.vue', options)\n    ),\n  },\n}).mount('#app');"
  },
  {
    "path": "assets/js/xymini.js",
    "content": "/* XYMini Sender - Minimal implementation of file transfer through serial\n * Copyright (C) Erny <info@erny.dev>\n * SPDX-License-Identifier: MPL-2.0-no-copyleft-exception\n *\n * Warning: This does not comply with XMODEM and YMODEM standards\n*/\n\nconst STX = 0x02;\nconst ACK = 0x06;\nconst NAK = 0x15;\nconst EOF = 0x04;\nconst XYMINI_1K_MAGIC = 0x43;\nconst PAYLOAD_LEN = 1024;\nconst BLOCK_LEN = PAYLOAD_LEN + 5;\nconst CRC_POLY = 0x1021;\n\nfunction uint16 (n) {\n  return n & 0xFFFF;\n}\n\nfunction updateCrc(crcIn, incr) {\n    const xor = uint16(crcIn >> 15);\n    let result = uint16(crcIn << 1);\n\n    if (incr) {\n        result = uint16(result + 1);\n    }\n\n    if (xor) {\n        result = uint16(result ^= CRC_POLY);\n    }\n\n    return result;\n}\n\nfunction crc16(data) {\n    let crc;\n\n    for (let i = 0; i < data.length; i++) {\n        for (let j = 0x80; j; j >>= 1) {\n            crc = updateCrc(crc, data[i] & j);\n        }\n    }\n\n    for (let n = 0; n < 16; n++) {\n        crc = updateCrc(crc, 0);\n    }\n\n    return crc;\n}\n\nasync function detectXYMini(serial) {\n    const textDecoder = new TextDecoder();\n\n    while (true) {\n        const value = await serial.readBytes();\n\n        if (value[0] == XYMINI_1K_MAGIC) {\n            console.log(\"XYMini: detected\");\n            break;\n        }\n    }\n}\n\nfunction generateXYMiniBlock(blockId, payload) {\n    let buf = new Uint8Array(BLOCK_LEN);\n    let i = 0;\n\n    buf[i++] = STX;\n    buf[i++] = blockId;\n    buf[i++] = 0xFF - blockId;\n\n    if (payload.length > PAYLOAD_LEN) {\n        throw new Error(\"Payload too large to be transmitted in one block\");\n    }\n\n    for (let j = 0; j < payload.length; j++) {\n        buf[i++] = payload[j];\n    }\n\n    while (i < BLOCK_LEN - 2) {\n        buf[i++] = 0xFF;\n    }\n\n    let crcBuf = buf.slice(3, PAYLOAD_LEN + 3)\n    let crc = crc16(crcBuf);\n\n    buf[i++] = (crc >> 8) & 0xFF;\n    buf[i++] = crc & 0xFF;\n\n    return buf;\n}\n\nasync function sendXYMini(serial, data, progressCallback) {\n    let blockId = 1;\n    let size = data.length;\n    let i = 0;\n    let nakN = 0;\n    let wrongCharN = 0;\n\n    await detectXYMini(serial);\n\n    while(true) {\n        const payloadSize = Math.min(PAYLOAD_LEN, size);\n\n        if (size) {\n            const payload = data.slice(i, payloadSize + i);\n\n            const block = generateXYMiniBlock(blockId, payload);\n            await serial.writeBytes(block);\n        } else {\n            serial.writeBytes(new Uint8Array([EOF]));\n        }\n\n        const value = await serial.readBytes();\n\n        if (value[0] == ACK) {\n            if (!size) {\n                console.log(\"XYMini: End of transmission\");\n\n                return;\n            }\n\n            blockId++;\n            size -= payloadSize;\n            i += payloadSize;\n            nakN = 0;\n            wrongCharN = 0;\n            progressCallback(data.length - size);\n        } else if (value[0] == NAK) {\n            if (nakN >= 10) {\n                throw new Error(\"Received 10 NAK, receiver is rejecting file transmission\");\n            }\n\n            console.log(\"XYMini: NAK\");\n            nakN++;\n        } else {\n            if (wrongCharN >= 30) {\n                throw new Error(\"Received 30 wrong characters, the receiver is rejecting the transmission or the connection is too noisy\");\n            }\n\n            console.log(\"XYMini: wrong character\");\n            console.log(value);\n            wrongCharN++;\n        }\n    }\n}\n"
  },
  {
    "path": "assets/ts/LTF7267-BHA-ploam.ts",
    "content": "function hexEncode(str: String): String {\n\n    var result = \"\";\n    for (let i = 0; i < str.length; i++) {\n        const hex = str.charCodeAt(i).toString(16);\n        result += hex.padStart(2, \"0\");\n    }\n\n    return result;\n}\n\nfunction hisensePloam(ascii_ploam: String): String {\n    const hex_ploam = hexEncode(ascii_ploam);\n    const hex_padded_ploam = hex_ploam.padEnd(72, \"0\");\n    let array: String[] = [];\n    for (let i = 0; i < 9; i++) {\n        const ploam_segment = hex_padded_ploam.slice(i * 8, (i + 1) * 8);\n        let new_ploam_segment = \"\";\n        for (let j = 4; j > 0; j--) {\n            new_ploam_segment = new_ploam_segment + ploam_segment.slice((j - 1) * 2, j * 2);\n        }\n        if (new_ploam_segment !== \"00000000\") {\n            array.push(\"INT             CFG_ID_PON_REGISTRATION_ID\" + i + \"                                        = 0x\" + new_ploam_segment + \";\");\n        }\n    }\n    return array.join(\"\\n\");\n}\n\n(window as any).hisensePloam = hisensePloam;"
  },
  {
    "path": "bin/just-the-docs",
    "content": "#!/usr/bin/env ruby\r\n\r\ngem_dir = File.expand_path(\"..\",File.dirname(__FILE__))\r\n$LOAD_PATH.unshift gem_dir # Look in gem directory for resources first.\r\nexec_type = ARGV[0]\r\n\r\nif exec_type == 'rake' then\r\n    require 'rake'\r\n    require 'pp'\r\n    pwd=Dir.pwd\r\n    Dir.chdir(gem_dir) # We'll load rakefile from the gem's dir.\r\n    Rake.application.init\r\n    Rake.application.load_rakefile\r\n    Dir.chdir(pwd) # Revert to original pwd for any path args passed to task.\r\n    Rake.application.invoke_task(ARGV[1])\r\nend"
  },
  {
    "path": "browserconfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<browserconfig>\n    <msapplication>\n        <tile>\n            <square150x150logo src=\"/mstile-150x150.png\"/>\n            <TileColor>#27262b</TileColor>\n        </tile>\n    </msapplication>\n</browserconfig>\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: \"3.3\"\n\nservices:\n  typescript:\n    image: node:20\n    command: sh -c \"cd /mnt && npm ci && npm run build\"\n    restart: on-failure\n    volumes:\n      - ./tsup.config.ts:/mnt/tsup.config.ts\n      - ./package.json:/mnt/package.json\n      - ./package-lock.json:/mnt/package-lock.json\n      - ./assets:/mnt/assets\n  site:\n    image: jekyll/jekyll:latest \n    command: jekyll serve --verbose --incremental --force_polling --config  _config.yml,_config.docker.yml\n    environment:\n      - JEKYLL_ENV=docker\n    volumes:\n      - .:/srv/jekyll\n    ports:\n      - 4000:4000\n    depends_on:\n      typescript:\n        condition: service_completed_successfully\n        \n"
  },
  {
    "path": "faq.md",
    "content": "---\ntitle: FAQs & Troubleshooting\nhas_children: false\nnav_order: 2\ndescription:  \nlayout: default\n---\n\n{% include alert.html content=\"Playing with ONTs can cause your serial number/PLOAM password to be banned and faults to the optics, ONTs and OLTs. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"red\" %}\n"
  },
  {
    "path": "index.md",
    "content": "---\ntitle: Hack GPON\nhas_children: false\nnav_order: 1\ndescription: Worldwide wiki on how to access, change and edit ONTs\n---\n\nMost ONTs run customized firmware which implement vendor and ISP-specific integrations and are locked down in functionality to match service requirements.\nONTs often perform differently depending on the OLT and the settings applied by the ISP; for convenience it is often desirable to switch from an external ONT to an SFP or vice-versa, but most OLTs perform so many checks on the ONT that a simple replacement is almost impossible.\n\n{% include alert.html content=\"Playing with ONTs can cause your serial number/PLOAM password to be banned and faults to the optics, ONTs and OLTs. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed.\" alert=\"Warning\"  icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.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.org makes no representations or warranties of any kind, expressed 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 devices. To the extent not prohibited by law, in no circumstances shall hack-gpon.org 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.\"  alert=\"Warning\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"Certain links in this website will lead to websites which are not under the control of hack-gpon.org. When you visit these, you will leave the hack-gpon.org website. hack-gpon.org 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.org.\"  alert=\"Warning\"  icon=\"svg-warning\" color=\"red\" %}\n\n{% include alert.html content=\"This site is maintained and updated by a community of enthusiasts, and therefore in no way replaces or replaces official vendor and provider guides. Use of this content is at your own risk.\"  alert=\"Warning\"  icon=\"svg-warning\" color=\"yellow\" %}\n\n{% include alert.html content=\"You can also help us with the content of this site, on each page you will find a button to edit on GitHub.\" alert=\"Tip\"  icon=\"svg-info\" color=\"green\" %}\n\n{% include alert.html content=\"This project and its documentation relate *exclusively to the Passive Optical Network (PON) layer* of optical network devices. \nWe *do not access, modify, or interact with any radio components, wireless interfaces, or transmitters*. As such, the activities described here are *not intended to fall under the scope* of the EU Radio Equipment Directive (RED) (*Directive 2014/53/EU) or the associated **Delegated Regulation (EU) 2022/30* on cybersecurity for internet-connected radio devices. However, any modification involving radio hardware *may trigger RED applicability*. Users are advised to assess regulatory obligations accordingly.\"  alert=\"Warning\"  icon=\"svg-warning\" color=\"yellow\" %}\n\nThis wiki contains links, codes, tutorials on how to access, edit and modify ONTs.\nAre you ready?\n\n<span class=\"fs-8\">\n[Yes](ont){: .btn .btn-green } [Quick start](quick-start){: .btn .btn-blue }\n</span>"
  },
  {
    "path": "package.json",
    "content": "{\n  \"scripts\": {\n    \"build\": \"tsup\",\n    \"watch\": \"tsup --watch\",\n    \"clean\": \"rimraf assets/js/generated\"\n  },\n  \"devDependencies\": {\n    \"rimraf\": \"^5.0.1\",\n    \"tsup\": \"^6.7.0\"\n  }\n}\n"
  },
  {
    "path": "privacy-policy.md",
    "content": "---\nlayout: default\ntitle: Privacy Policy\npermalink: /privacy-policy\nnav_exclude: true\nsearch_exclude: true\n---\n\n# Privacy Policy for hack-gpon.org\n\nAt hack-gpon.org, accessible from hack-gpon.org, 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.org and how we use it.\n\nIf you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us.\n\nThis 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.org. This policy is not applicable to any information collected offline or via channels other than this website.\n\n# Consent\n\nBy using our website, you hereby consent to our Privacy Policy and agree to its terms.\n\n# Information we collect\n\nNo personal information is stored in hack-gpon.org, hack-gpon.org 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)\n\nIf you make changes, PRs, commits to the git repository your personal information may be displayed on hack-gpon.org.\n\n# How we use your information\n\nWe use the information we collect in various ways, including to:\n\n- Provide, operate, and maintain our website\n- Improve, personalize, and expand our website\n- Understand and analyze how you use our website\n- Develop new products, services, features, and functionality\n- 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\n- Send you emails\n- Find and prevent fraud\n\n# Log Files\n\nhack-gpon.org 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.\n\n\n# Advertising Partners Privacy Policies\n\nThere are no Advertising Partners\n\n# Third Party Privacy Policies\n\nhack-gpon.org’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.\n\nYou 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.\n\n- [GitHub Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-privacy-statement)\n\n\n# CCPA Privacy Rights (Do Not Sell My Personal Information)\nUnder 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.\n\n# GDPR Data Protection Rights\nWe 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.\n\n# Children’s Information\nAnother 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.\n\nhack-gpon.org 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.\n\n\n\n"
  },
  {
    "path": "quick-start.md",
    "content": "---\ntitle: Quick Start\nhas_children: false\nnav_order: 2\ndescription:  \nlayout: default\n---\n{% include alert.html content=\"Playing with ONTs can cause your serial number/PLOAM password to be banned and faults to the optics, ONTs and OLTs. Always pay close attention to the calibration of the laser, under no circumstances should the calibration be changed.\" alert=\"Warning\" icon=\"svg-warning\" color=\"red\" %}\n\nThe information on this page is taken from the GPON/EPON standard and information from the major vendors of GPON/EPON equipment, each individual item containing a verifiable citation in the standard. Feel free to cite this page as: `{{ page.title }}, Hack GPON. Available at: https://hack-gpon.org{{ page.url }}`.\n\n# Fiber Optic Connectors\n\nNumerous connectors, both standard and proprietary, are used in the field of telecommunications equipment, data lines, television and cable, and other industrial fields. \n\n{% include image.html file=\"quick-start/optic-fiber-connectors.jpg\"  alt=\"Some of the most common connectors\" caption=\"Some of the most common connectors\" %}\n\nThe main connectors are:\n- Bionic Connector\n- Standard Connector (SC)\n- Ferrule Core Connector (FC)\n- ST Connector (ST)\n- SMA Connector\n- Lucent Connector (LC)\n- Enterprise Systems Connection Connector (ESCON)\n- Fiber Distributed Data Interface Connector (FDDI)\n- Opti-Jack Connector\n- LX-5 Connector\n- Volition Connector\n- MT-RJ Connector\n- MU Connector\n- MT Connector\n- E2000 Connector\n\n## Polishing of Fiber Optic Connectors\n\nAPC and UPC use different polishing methodologies of fiber optic ferrules, and they define types of fiber patch cable connectors. These determine the quality of the fiber optic lightwave transmission, mostly calculated in optical return loss and insertion loss[^wolon].\n\n{% include image.html file=\"quick-start/apc-upc.jpg\" alt=\"Picture of APC and UPC connections\" caption=\"Picture of APC and UPC\" %}\n\nAngled physical connectors are used on the ONT's side to reduce back-reflections. In case RF signals (1550nm) are introduced, there will be two signals traveling in the downstream direction (1490nm + 1550nm); as RF systems are highly sensitive to reflections the APC connectors reduce the return loss value[^zyxel] and are preferred over UPC.\n\nNext generation systems are planned to operate in wavelengths over 1500nm, making APC connectors on the ONT's side something that will be more commonplace in the future[^zyxel].\n\n# PON Networks[^huawei]\n\n- PON is a kind of passive optical network featuring point-to-multiple-point architecture;\n- PON is short for Passive Optical Network;\n- PON consists of Optical Line Terminal (OLT), Optical Network Unit (ONU) and Passive Optical Splitter.\n\n- APON: ATM Passive Optical Networks;\n- EPON: Ethernet Passive Optical Networks;\n- GPON: Gigabit-capable Passive Optical Networks;\n- XG(S)-GPON: 10 Gigabit-capable Passive Optical Networks[^standardxgpon];\n\nEPON and GPON are complementary and compete against each other under some aspects. So in the following contents, we'd like to render the EPON and GPON comparison more clear[^fs].\n\n## Why GPON?\n\n- GPON is defined by ITU, International Telecomunication Union[^standardgpon].\n- GPON supports Triple-play services, providing a competitive full-service solution[^huawei].\n- GPON supports high-bandwidth transmission to break down the bandwidth bottleneck of the access over twisted pair cables, so as to satisfy the requirements of high-bandwidth services, such as IPTV and live TV broadcasts[^huawei].\n- GPON supports long-reach (up to 20 km) service coverage to overcome the obstacle of the access technology over twisted pair cables and reduce the network nodes[^huawei].\n- With complete standards and high technical requirements, GPON supports integrated services in a good way[^huawei].\n- GPON is the choice of large carriers in the international market[^huawei].\n- GPON is high broadband efficiency, around 92%[^huawei].\n- GPON has integrated QoS handling that makes it better than EPON, because QoS on EPON is higher cost relative to GPON[^fs].\n- GPON supports splitting up to 1:128, XG(S)-PON up to 1:256[^fs],[^standardxgpon].\n- Security: the data transmitted to ONUs/ONTs is encrypted using the AES mechanism[^telecom].\n\n\n## Why EPON?\n- EPON is defined by IEEE 802.3 standard, ratified as 802.3ah-2004 for 1.25 Gbps (1.0 Gbps prior to 8B/10B coding) and IEEE 802.3av standard for 10Gbps (10G-EPON)[^standard1epon],[^standard10epon].\n- 1/1-EPON supports splitting up to 1:32, 10/*-EPON up to 1:128[^fs],[^standard10epon].\n- In EPON, both downstream and upstream line rates are 1.25 Gbps, but due to the 8B/10B line encoding, the bit rate for data transmission is 1 Gbps[^medium].\n- The use of EPON allows carriers to eliminate complex and expensive ATM and Sonet elements and to simplify their networks, thereby lowering costs to subscribers. Currently, GPON equipment costs are approximately 1.5 to 2 times higher than an EPON[^medium],[^fs].\n\n## Layering model \n\nLayering model and the associated management services are all mapped over Ethernet (directly or via IP). \n\n- GPON supports the encapsulation of other protocols besides Ethernet, such as ATM[^cisco],[^huawei],[^fs].\n- XG(S)-PON removes the support of ATM encapsulation[^telecom].\n- GPON uses two layers of encapsulation. First, TDM and Ethernet frames are wrapped into GTC Encapsulation Method (GEM) frames, which have a GFP-like format (derived from Generic Frame Procedure ITU G.7401). Secondly, ATM and GEM frames are both encapsulated into GTC frames that are finally transported over the PON[^medium],[^fs].\n- The main purpose of GEM frames is to provide a frame-oriented service, as an alternative to ATM, in order to efficiently accommodate Ethernet and TDM frames. With GEM, all traffic is mapped across the GPON network using a variant of SONET/SDH GFP. GEM supports a native transport of voice, video, and data without an added ATM or IP encapsulation layer. That's why GPON supports downstream rates as high as 2.5 Gbps and upstream rates from 155 Mbps to 2.5 Gbps. It is much faster than EPON[^medium]. \n- However, EPON clearly offers a much simpler and more straightforward solution than GPON. The support of ATM and the double encapsulation of GPON serve no real benefit over a pure Ethernet transport scheme[^medium].\n- In EPON, Ethernet frames are carried in their native format over the PON, which greatly simplifies the layering model and the associated management. EPON employs a single layer that uses IP (Internet Protocol) to carry data, voice, and video[^medium],[^fs].\n\n{% include image.html file=\"epon_gpon.jpg\"  alt=\"EPON vs GPON Layers\" caption=\"EPON vs GPON Layer\" %}\n\n## Comunication between ONTs and OLT[^fs]\n\n- EPON utilizes IEEE 802.3ah OAM messages for provisioning, fault isolation and performance monitoring in conjunction with SNMP (Simple Network Management Protocol) sets and gets through IETF (Internet Engineering Task Force) and MIBs (Management Information Bases). Additional control messages are MPCP GATEs/REPORTs for bandwidth granting.\n- In GPON there are three different types of control messages: OMCI (ONT Management and Control Interface), OAM, and PLOAM (Physical Layer OAM). Their roles are shown in the table below.\n\n| Control channel | Format          | Used for                                                                                                           |\n| --------------- | --------------- | ------------------------------------------------------------------------------------------------------------------ |\n| OMCI            | Ethernet or ATM | Provisioning of ONT service defining layers above the GTC                                                          |\n| Embedded OAM    | Header overhead | BW granting, encryption key switching, and DBA                                                                     |\n| PLOAM           | ATM             | Auto discovery and all other PMD and GTC management info. PLOAM messages are directed to ONTs or FF for broadcasts |\n\n\n## Wavelength[^huaweimultiplexing]\n\nPON adopts Wavelength Division Multiplexing (WDM) technology, facilitating bidirectional communication over a single fiber.\n\nTo separate upstream/downstream signals of multiple users over a single fiber, PON adopts two multiplexing mechanism:\n- In downstream direction, data packets are transmitted in a broadcast manner;\n- In upstream direction, data packets are transmitted using TDMA.\n\n{% include image.html file=\"quick-start/optical-fiber-transmission-windows.svg\"  alt=\"Fiber Optic Operation Wavelength and Window\" caption=\"Fiber Optic Operation Wavelength and Window\" %}\n\n\n|            | GPON                      | 1/1-EPON                  | XG(S)-GPON                  | 10/1-EPON                   | 10/10-EPON                  |\n| ---------- | ------------------------- | ------------------------- | --------------------------- | --------------------------- | --------------------------- |\n| Upstream   | 1310 nm (1260 nm-1360 nm) | 1310 nm (1260 nm-1360 nm) | 1270 nm (1260 nm-1280 nm)   | 1310 nm (1260 nm-1360 nm)   | 1270 nm (1260 nm-1280 nm)   |\n| Downstream | 1490 nm (1480 nm-1500 nm) | 1490 nm (1480 nm-1500 nm) | 1577.5 nm (1575 nm-1580 nm) | 1577.5 nm (1575 nm-1580 nm) | 1577.5 nm (1575 nm-1580 nm) |\n| RF-Overlay | 1550 nm (1550 nm-1560 nm) | 1550 nm (1550 nm-1560 nm) | 1550 nm (1550 nm-1560 nm)   | 1550 nm (1550 nm-1560 nm)   | 1550 nm (1550 nm-1560 nm)   |\n\n# Power Budget[^zyxel],[^cisco]\n\n- Splitter attenuation\n\n| Splitter Type | Attenuation |\n| ------------- | ----------- |\n| 1:2           | ≤ 3.5 dB    |\n| 1:4           | ≤ 7.0 dB    |\n| 1:8           | ≤ 10.5 dB   |\n| 1:16          | ≤ 14.0 dB   |\n| 1:32          | ≤ 17.5 dB   |\n| 1:64          | ≤ 20.5 dB   |\n| 1:128         | ≤ 24.0 dB   |\n\n- Loop attenuation: ≤ 0.5 dB (Per Km)\n\n- Connector attenuation: ≤ 0.3 dB (Per Connector)\n\n# Classes for laser[^cisco]\n\n|              | Class A | Class B | Class B+ | Class C |\n| ------------ | ------- | ------- | -------- | ------- |\n| Minimum loss | 5 dB    | 10 dB   | 13 dB    | 15 dB   |\n| Maximun loss | 20 dB   | 25 dB   | 28 dB    | 30 dB   |\n\nThe requirements of a particular class may be more stringent for one system type than for another.\n\n<hr>\n\n[^standardgpon]: *G.984.1: Gigabit-capable passive optical networks (GPON): General characteristics* https://www.itu.int/rec/T-REC-G.984.1\n[^standardxgpon]: *G.987.1: 10-Gigabit-capable passive optical networks (XG-PON): General requirements* https://www.itu.int/rec/T-REC-G.987.1\n[^standard1epon]: *IEEE 802.3ah-2004: IEEE Standard for Information technology-- Local and metropolitan area networks-- Part 3: CSMA/CD Access Method and Physical Layer Specifications Amendment: Media Access Control Parameters, Physical Layers, and Management Parameters for Subscriber Access Networks* https://standards.ieee.org/ieee/802.3ah/3179/\n[^standard10epon]: *IEEE 802.3av-2009: IEEE Standard for Information technology-- Local and metropolitan area networks-- Specific requirements-- Part 3: CSMA/CD Access Method and Physical Layer Specifications Amendment 1: Physical Layer Specifications and Management Parameters for 10 Gb/s Passive Optical Networks* https://standards.ieee.org/ieee/802.3av/4060/\n[^fs]: *Comparison of EPON and GPON* https://community.fs.com/blog/comparison-of-epon-and-gpon.html\n[^zyxel]: *GPON E2E Fundamentals*, Zyxel 2018\n[^huawei]: *GPON Fundamentals*, Huawei 2010  http://jm.telecoms.free.fr/QCM_Fibre/GPON-Fundamentals_Huawei.pdf\n[^broadbandforum]: *GPON in FTTx Broadband Deployments*, Broadband Forum 2010 https://www.broadband-forum.org/download/MR-246.pdf\n[^wolon]: *Fiber SFP Module Compatibility with APC, UPC, PC* https://www.wolonte.com/news.asp?id=599\n[^cisco]: *Understand GPON Technology* https://www.cisco.com/c/en/us/support/docs/switches/catalyst-pon-series/216230-understand-gpon-technology.html\n[^medium]: *HTFuture: EPON vs GPON Standard* https://medium.com/@ivyhtfuture/epon-vs-gpon-standard-b8ec20c55bb3\n[^telecom]: *Fifty Years of Fixed Optical Networks Evolution: A Survey of Architectural and Technological Developments in a Layered Approach* https://doi.org/10.3390/telecom3040035\n[^huaweimultiplexing]: *GPON Principle---Data Multiplexing* https://forum.huawei.com/enterprise/en/gpon-principle-data-multiplexing/thread/458243-100181\n\n"
  },
  {
    "path": "rakefile",
    "content": "Dir.glob('lib/tasks/*.rake').each {|r| import r}\r\n"
  },
  {
    "path": "site.webmanifest",
    "content": "{\n    \"name\": \"Hack GPON\",\n    \"short_name\": \"Hack GPON\",\n    \"icons\": [\n        {\n            \"src\": \"/android-chrome-192x192.png\",\n            \"sizes\": \"192x192\",\n            \"type\": \"image/png\"\n        },\n        {\n            \"src\": \"/android-chrome-512x512.png\",\n            \"sizes\": \"512x512\",\n            \"type\": \"image/png\"\n        }\n    ],\n    \"theme_color\": \"#27262b\",\n    \"background_color\": \"#27262b\",\n    \"start_url\": \"https://hack-gpon.org/\",\n    \"display\": \"standalone\"\n}\n"
  },
  {
    "path": "tsup.config.ts",
    "content": "import { defineConfig } from 'tsup'\n\nexport default defineConfig({\n  entry: ['assets/ts/'],\n  splitting: false,\n  sourcemap: true,\n  clean: true,\n  outDir: 'assets/js/generated'\n})\n"
  }
]