diff options
-rw-r--r-- | _ont_xgs/ont-hisense-ltf7267-bha+.md | 93 | ||||
-rw-r--r-- | assets/js/LTF7267-BHA-ploam.js | 28 |
2 files changed, 118 insertions, 3 deletions
diff --git a/_ont_xgs/ont-hisense-ltf7267-bha+.md b/_ont_xgs/ont-hisense-ltf7267-bha+.md index 1975930..7ac0311 100644 --- a/_ont_xgs/ont-hisense-ltf7267-bha+.md +++ b/_ont_xgs/ont-hisense-ltf7267-bha+.md @@ -307,6 +307,95 @@ INT CFG_ID_PON_VSSN = 0xAABBCCDD; Reboot ONT to apply the change +## Setting ONU GPON PLOAM password + +### Web procedure + +<form id="hisense-ploam" novalidate> + <div class="form-floating mb-3"> + <input type="text" class="form-control" placeholder="PLOAM in ASCII" name="ploam" id="ploam" required> + <label for="ploam">PLOAM in ASCII</label> + <div class="invalid-feedback"> + Please provide a valid PLOAM password. + </div> + </div> + <div class="mb-3"> + <input type="submit" class="btn btn-primary" value="Encode!"> + </div> + <div class="language-plaintext highlighter-rouge"> + <div class="highlight"> + <pre class="highlight" id="ploam-encoded"> + </pre> + </div> + </div> +</form> + +<script type="text/javascript" src="/assets/js/LTF7267-BHA-ploam.js"></script> +<script type="text/javascript"> + var hisensePloamForm = document.getElementById('hisense-ploam'); + var hisenseResult = document.getElementById('ploam-encoded'); + hisensePloamForm.addEventListener('submit', (event) => { + event.preventDefault(); + if (!hisensePloamForm.checkValidity()) { + event.preventDefault(); + } else { + const data = new URLSearchParams(new FormData(hisensePloamForm)); + hisenseResult.innerHTML = hisensePloam(data.get('ploam')); + } + }); +</script> + + +### Normal procedure + +This ONT seems to be supporting a PLOAM password up to 288 bits in lenghth (36 ASCII characters, 72 Hex digits). + +The PLOAM password is stored into 32 bit chunks (4 ASCII characters / 8 Hex digits), each byte swapped. + +So, starting from the following PLOAM in ASCII format + +``` +A1B2C3D4E5 +``` + +It gets translated into the following HEX value: + +``` +0x41314232433344344535 +``` + +Which is then split into the following blocks (the last block gets padded with 0 to reach 8 digits) + +``` +BLOCK 0: 0x41314232 +BLOCK 1: 0x43334434 +BLOCK 2: 0x45350000 +``` + +Each block is then byte swapped (i.e. read each sequence of two digits from right to left) + +``` +BLOCK 0: 0x32423141 +BLOCK 1: 0x34443343 +BLOCK 2: 0x00003545 +``` + +And then you can finally persist it by changing the configuration file + +```sh +# vi /config/scfg.txt +``` + +Append lines below to the file and save it to change the PLOAM password + +``` +INT CFG_ID_PON_REGISTRATION_ID0 = 0x32423141; +INT CFG_ID_PON_REGISTRATION_ID1 = 0x34443343; +INT CFG_ID_PON_REGISTRATION_ID2 = 0x00003545; +``` + +Reboot the ONT to apply the change. + ## Setting ONU GPON LOID and LOID password @@ -330,7 +419,7 @@ Reboot ONT to apply the change ```sh # fw_setenv img_version0 20220527052622 -# fw_setenv img_version0 20220527052622 +# fw_setenv img_version1 20220527052622 ``` Reboot ONT to apply the change @@ -381,8 +470,6 @@ Reboot ONT to apply the change ## Changing OMCC Version -{% include alert.html content="In Italy, if you are under some Huawei OLT it's mandatory to use 0xA3, while on Alcatel 0xB4, otherwise you will get O5 status but no MIBs - Note that this can be quirk of TIM Italy" alert="Warning" icon="svg-warning" color="red" %} - ```sh # vi /config/scfg.txt diff --git a/assets/js/LTF7267-BHA-ploam.js b/assets/js/LTF7267-BHA-ploam.js new file mode 100644 index 0000000..57cd307 --- /dev/null +++ b/assets/js/LTF7267-BHA-ploam.js @@ -0,0 +1,28 @@ +function hexEncode(str){ + var hex, i; + + var result = ""; + for (i=0; i<str.length; i++) { + hex = str.charCodeAt(i).toString(16); + result += hex.padStart(2, "0"); + } + + return result; +} + +function hisensePloam(ascii_ploam) { + var hex_ploam = hexEncode(ascii_ploam); + var hex_padded_ploam = hex_ploam.padEnd(72, "0"); + var array =[]; + for (i = 0; i<9; i++) { + ploam_segment = hex_padded_ploam.slice(i*8, (i+1)*8); + new_ploam_segment = ""; + for(j = 4; j>0; j--) { + new_ploam_segment = new_ploam_segment + ploam_segment.slice((j-1)*2, j*2); + } + if(new_ploam_segment !== "00000000") { + array.push("INT CFG_ID_PON_REGISTRATION_ID"+i+" = 0x"+new_ploam_segment+";"); + } + } + return array.join("\n"); +}
\ No newline at end of file |