From bc4fa78050369a4c458da75676bfe6d60a903087 Mon Sep 17 00:00:00 2001 From: Simone <26844016+simonebortolin@users.noreply.github.com> Date: Fri, 10 Feb 2023 21:57:28 +0100 Subject: Some Fix on Huawei, FS, Broadcom (#146) * Getting/Setting Speed LAN Mode * RX Loss / TX Fault confusion * change order and heading of section * fix eeprom values and subunit * various alignment and table fixes --- _ont/ont-huawei-ma5671a.md | 329 +++++++++++++++++++++++++-------------------- 1 file changed, 185 insertions(+), 144 deletions(-) (limited to '_ont/ont-huawei-ma5671a.md') diff --git a/_ont/ont-huawei-ma5671a.md b/_ont/ont-huawei-ma5671a.md index b4661e7..1609d5c 100644 --- a/_ont/ont-huawei-ma5671a.md +++ b/_ont/ont-huawei-ma5671a.md @@ -7,27 +7,27 @@ parent: Huawei # Hardware Specifications -| | | -| ---------------- | ----------------------------------- | -| Vendor/Brand | Huawei | -| Model | MA5671A | -| ODM | ✅ | -| Chipset | Lantiq PEB98035 | -| Flash | 16 MB | -| RAM | 64 MB (Winbond W25Q128FV) | -| CPU | MIPS 34Kc interAptiv | -| CPU Clock | 400MHz | -| System | OpenWRT | -| HSGMII | Yes | -| Optics | SC/APC | -| IP address | 192.168.1.10 | -| Web Gui | After root | -| SSH | ✅ user `root`, password `admin123` | -| Telnet | | -| Serial | ✅ on SFP | -| Serial baud | 115200 | -| Serial encoding | 8-N-1 | -| Form Factor | miniONT SFP | +| | | +| --------------- | ----------------------------------- | +| Vendor/Brand | Huawei | +| Model | MA5671A | +| ODM | | +| Chipset | Lantiq PEB98035 | +| Flash | 16 MB | +| RAM | 64 MB (Winbond W25Q128FV) | +| CPU | MIPS 34Kc interAptiv | +| CPU Clock | 400MHz | +| System | OpenWRT | +| HSGMII | Yes | +| Optics | SC/APC | +| IP address | 192.168.1.10 | +| Web Gui | After root | +| SSH | ✅ user `root`, password `admin123` | +| Telnet | | +| Serial | ✅ on SFP | +| Serial baud | 115200 | +| Serial encoding | 8-N-1 | +| Form Factor | miniONT SFP | {% include image.html file="g-010s-p-and-ma5671a.jpg" alt="G-010S-P and MA5671A Teardown" caption="G-010S-P and MA5671A Teardown" %} @@ -86,7 +86,7 @@ mtd5 --> rootfs_data For more info [XPONos partition layout](https://github.com/XPONos/linux_lantiq-falcon/commit/456f68f69a84c846a542a9f0ea47c37476535dcb). -## When booting from image0 +### When booting from image0 | dev | size | erasesize | name | | ---- | -------- | --------- | ------------- | @@ -97,7 +97,7 @@ For more info [XPONos partition layout](https://github.com/XPONos/linux_lantiq-f | mtd4 | 00370000 | 00010000 | "rootfs_data" | | mtd5 | 00800000 | 00010000 | "image1" | -## When booting from image1 +### When booting from image1 | dev | size | erasesize | name | | ---- | -------- | --------- | ------------- | @@ -108,7 +108,141 @@ For more info [XPONos partition layout](https://github.com/XPONos/linux_lantiq-f | mtd4 | 006d8077 | 00010000 | "rootfs" | | mtd5 | 00410000 | 00010000 | "rootfs_data" | -## EEPROM (I2C slave simulated EEPROM) +## List of firmwares and files + +{% 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" %} + +- [Carlito MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mtd2.bin){: .btn } md5hash: d3cb6f7efec201b37931139feb4bb23b +- [Huawei Rooted MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd2.img){: .btn } md5hash: 3138d2dd06a32bb92bc63610fec6fcd6 +- [Carlito MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mtd5.bin){: .btn } md5hash: 59d2dc15227d6f693a38131eca89b29e +- [Huawei Rooted MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd5.img){: .btn } md5hash: 0e4cfdc1b96be6581869b26b48789556 +- [1224abort.bin](https://ma5671a.s3.nl-ams.scw.cloud/1224ABORT.bin){: .btn } md5hash: 10e94a4b4acdc82dec20c7904b69e5c0 +- [right.com.cn (China) 19 July 2022](https://mega.nz/file/9fpSkYTb#wNyjAj1kOLWC9HozX-gTQ-TS3VFqRYg--x1rm7RSuDg){: .btn } md5hash: 6b5e7e3c659fe3f0204340fa746ac4fc +- [right.com.cn (China) 29 Aug 2022](https://mega.nz/file/VHFFSBrT#2WhDPcdON5EHR01l6Ut35GC3sl55e4l09Z0NUo_7SWA){: .btn} md5hash: 3d357e2dc7b59c66fe61b4ddf1fb8dc0 +- [ONT FS.com GPON ONU Stick with MAC firmware / SourcePhotonics SPS-34-24T-HP-TDFO firmware](/ont-fs-com-gpon-onu-stick-with-mac) + +# General Settings and Useful Commands + +- [Huawei Rooted Firmware General Setting](/ont-huawei-ma5671a-rooted) +- [Carlito Firmware General Setting](/ont-huawei-ma5671a-carlito) +- [SourcePhotonics Firmware General Setting](/ont-huawei-ma5671a-sf) +- [right.com.cn (China) Firmware General Setting](/ont--huawei-ma5671a-china) +- [Nokia G-010S-P Firmware General Setting](/ont-nokia-g-010s-p) + +## Transferring files to the stick + +{% 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" %} + +```sh +# scp rootfs.bin root@192.168.1.10:/tmp/ +``` + +## Backup of all partition + +Make a backup of all partitions, an easy way is: +- On the stick run: +```sh +cat /proc/mtd +``` + +### Via SCP +- For each mtdX run in the lantiq shell: +```sh +cp /dev/mtdX /tmp +``` + +{% 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" %} + +And in the computer shell: +```sh +scp root@192.168.1.10:/tmp/mtdX ./ +``` + +### Via NC + +- For each mtdX run, on computer shell: +```sh +nc -l -p 1234 > mtdX.bin +``` +And in the lantiq shell: +```sh +cat /dev/mtdX | nc 192.168.1.11 1234 +``` + +## Checking the currently active image + +```sh +# fw_printenv committed_image +``` + +## Booting to a different image + + +```sh +# fw_setenv committed_image 0|1 +# fw_setenv image0|1_is_valid 1 +``` + +## Cloning of mtd1 (image 0) into mtd5 (image 1) + +{% 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" %} + +The following commands are used to clone image0 to image1 and then boot to it +```sh +# cat /dev/mtd2 > /tmp/mtd2.bin +# mtd -e image1 write /tmp/mtd2.bin image1 +# fw_setenv committed_image 1 +# fw_setenv image1_is_valid 1 +# reboot +``` + +## Flashing a new rootfs via SSH + +{% include alert.html content="Only the inactive image can be flashed" alert="Info" icon="svg-info" color="blue" %} + +The following commands are used to flash a new rootfs to image1 and then boot to it +```sh +# mtd -e image1 write /tmp/rootfs.bin image1 +# fw_setenv committed_image 1 +# fw_setenv image1_is_valid 1 +# reboot +``` + +{% 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" %} + +## Flashing a new rootfs via serial + +{% include alert.html content="We recommend using the flash web app." alert="Info" icon="svg-warning" color="yellow" %} + +If you wish to change the firmware via serial, we recommend using the web app: [Web Serial Flash](/ont-huawei-ma5671a-ymodem) + +{% 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" %} + +1. Connecting the molex-serial adapter and the serial to the computer as indicated in [Root Procedure](/ont-huawei-ma5671a-web-root) +2. Open Tera Term (or any other programme capable of connecting to the serial terminal) +3. 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 +``` +FALCON => loady 0x80800000 +``` +At this point it will appear: + +{% include image.html file="ma5671a-root-13.jpg" alt="shell requiring `mtd2` upload" caption="shell requiring `mtd2` upload" %} + +{:style="counter-reset:none"} +1. From the teratem menu do `FILE` → `TRANSFER` → `YMODEM` → `SEND` → `[mtd2.bin]`. +It 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. + +1. 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 +``` +FALCON => setenv committed_image 0 +FALCON => setenv image0_is_valid 1 +FALCON => saveenv +FALCON => sf probe 0 && sf erase C0000 740000 && sf write 80800000 C0000 740000 && reset +``` + +{% 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" %} + +# EEPROM (I2C slave simulated EEPROM) The 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. On 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. @@ -118,7 +252,7 @@ The Huawei MA5671A stores the content of the emulated EEPROM in U-Boot env varia - `EEPROM0 (A0h)` stored in U-Boot env variable `sfp_a0_low_128` - `EEPROM1 (A2h)` stored in U-Boot env variable `sfp_a2_info` -### EEPROM0 layout +## EEPROM0 layout | address | size | name | default value | description | | ------- | ---- | --------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | @@ -161,31 +295,31 @@ The Huawei MA5671A stores the content of the emulated EEPROM in U-Boot env varia | 256-639 | 384 | Reserved | `0x00 0x00 0x00...` | Reserved | -### EEPROM1 layout +## EEPROM1 layout | address | size | name | default value | description | | ------- | ---- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------- | | | | **DIAGNOSTIC AND CONTROL FIELDS** | | | -| 0-1 | 2 | Temp High Alarm | `0x5F 0x00` (95℃) | | -| 2-3 | 2 | Temp Low Alarm | `0xCE 0x00` (-50℃) | | -| 4-5 | 2 | Temp High Warning | `0x5A 0x00` (90℃) | | -| 6-7 | 2 | Temp Low Warning | `0xD3 0x00` (-45℃) | | -| 8-9 | 2 | Voltage High Alarm | `0x8C 0xA0` (3.6V) | | -| 10-11 | 2 | Voltage Low Alarm | `0x75 0x30` (3.0V) | | -| 12-13 | 2 | Voltage High Warning | `0x88 0xB8` (3.5V) | | -| 14-15 | 2 | Voltage Low Warning | `0x79 0x18` (3.1V) | | -| 16-17 | 2 | Bias High Alarm | `0xAF 0xC8` (90mA) | | -| 18-19 | 2 | Bias Low Alarm | `0x00 0x00` (0mA) | | -| 20-21 | 2 | Bias High Warning | `0x88 0xB8` (70mA) | | -| 22-23 | 2 | Bias Low Warning | `0x00 0x00` (0mA) | | -| 24-25 | 2 | TX Power High Alarm | `0x9B 0x82` (6dBm) | Value expressed in watts subunits | -| 26-27 | 2 | TX Power Low Alarm | `0x22 0xD0` (-1dBm) | Value expressed in watts subunits | -| 28-29 | 2 | TX Power High Warning | `0x7B 0x86` (5dBm) | Value expressed in watts subunits | -| 30-31 | 2 | TX Power Low Warning | `0x2B 0xD4` (0dBm) | Value expressed in watts subunits | -| 32-33 | 2 | RX Power High Alarm | `0x09 0xCF` (-6dBm) | Value expressed in watts subunits | -| 34-35 | 2 | RX Power Low Alarm | `0x00 0x0D` (-29dBm) | Value expressed in watts subunits | -| 36-37 | 2 | RX Power High Warning | `0x07 0xCB` (-7dBm) | Value expressed in watts subunits | -| 38-39 | 2 | RX Power Low Warning | `0x00 0x10` (-28dBm) | Value expressed in watts subunits | +| 0-1 | 2 | Temp High Alarm | `0x5F 0x00` (95℃) | Value expressed in two's complement | +| 2-3 | 2 | Temp Low Alarm | `0xCE 0x00` (-50℃) | Value expressed in two's complement | +| 4-5 | 2 | Temp High Warning | `0x5A 0x00` (90℃) | Value expressed in two's complement | +| 6-7 | 2 | Temp Low Warning | `0xD3 0x00` (-45℃) | Value expressed in two's complement | +| 8-9 | 2 | Voltage High Alarm | `0x8C 0xA0` (3.6V) | Value expressed in volt subunits[^subunit] | +| 10-11 | 2 | Voltage Low Alarm | `0x75 0x30` (3.0V) | Value expressed in volt subunits[^subunit] | +| 12-13 | 2 | Voltage High Warning | `0x88 0xB8` (3.5V) | Value expressed in volt subunits[^subunit] | +| 14-15 | 2 | Voltage Low Warning | `0x79 0x18` (3.1V) | Value expressed in volt subunits[^subunit] | +| 16-17 | 2 | Bias High Alarm | `0xAF 0xC8` (90mA) | Value expressed in milliampere subunits[^subunit] | +| 18-19 | 2 | Bias Low Alarm | `0x00 0x00` (0mA) | Value expressed in milliampere subunits[^subunit] | +| 20-21 | 2 | Bias High Warning | `0x88 0xB8` (70mA) | Value expressed in milliampere subunits[^subunit] | +| 22-23 | 2 | Bias Low Warning | `0x00 0x00` (0mA) | Value expressed in milliampere subunits[^subunit] | +| 24-25 | 2 | TX Power High Alarm | `0x9B 0x82` (6dBm) | Value expressed in watts subunits[^subunit] | +| 26-27 | 2 | TX Power Low Alarm | `0x22 0xD0` (-1dBm) | Value expressed in watts subunits[^subunit] | +| 28-29 | 2 | TX Power High Warning | `0x7B 0x86` (5dBm) | Value expressed in watts subunits[^subunit] | +| 30-31 | 2 | TX Power Low Warning | `0x2B 0xD4` (0dBm) | Value expressed in watts subunits[^subunit] | +| 32-33 | 2 | RX Power High Alarm | `0x09 0xCF` (-6dBm) | Value expressed in watts subunits[^subunit] | +| 34-35 | 2 | RX Power Low Alarm | `0x00 0x0D` (-29dBm) | Value expressed in watts subunits[^subunit] | +| 36-37 | 2 | RX Power High Warning | `0x07 0xCB` (-7dBm) | Value expressed in watts subunits[^subunit] | +| 38-39 | 2 | RX Power Low Warning | `0x00 0x10` (-28dBm) | Value expressed in watts subunits[^subunit] | | 40-45 | 6 | MAC address | Unique in each SFP | Contains the mac address of the SFP, it could also be empty | | 46-55 | 10 | Reserved | `0x00 0x00 0x00...` | Reserved | | 56-59 | 4 | RX_PWR(4) Calibration | `0x00 0x00 0x00 0x00` | 4th order RSSI calibration coefficient | @@ -216,10 +350,10 @@ The Huawei MA5671A stores the content of the emulated EEPROM in U-Boot env varia | 106-109 | 4 | Optional Diagnostics | `0xFF 0xFF 0xFF 0xFF` (No support) | Monitor Data for Optional Laser temperature and TEC current | | 110 | 1 | Status/Control | `0x00` (No support) | Optional Status and Control Bits | | 111 | 1 | Reserved | `0x00` | Reserved | -| 112-113 | 2 | Alarm Flags | `0x00 0x00` (No support) | Diagnostic Alarm Flag Status Bits | +| 112-113 | 2 | Alarm Flags | Supported | Diagnostic Alarm Flag Status Bits | | 114 | 1 | Tx Input EQ control | `0xFF` (No support) | Tx Input equalization level control | | 115 | 1 | Rx Out Emphasis control | `0xFF` (No support) | Rx Output emphasis level control | -| 116-117 | 2 | Warning Flags | `0x00 0x00` (No support) | Diagnostic Warning Flag Status Bits | +| 116-117 | 2 | Warning Flags | Supported | Diagnostic Warning Flag Status Bits | | 118-119 | 2 | Ext Status/Control | `0x00 0x00` (No support) | Extended module control and status bytes | | | | **GENERAL USE FIELDS** | | | | 120-126 | 7 | Vendor Specific | `0x70 0x00 0x00 0x00 0x00 0x00 0x00` | Vendor specific memory addresses | @@ -240,102 +374,6 @@ The Huawei MA5671A stores the content of the emulated EEPROM in U-Boot env varia {% include alert.html content="For more information, see the SFF-8472 Rev 10.2 specification." alert="Info" icon="svg-info" color="blue" %} -## List of firmwares and files - -{% 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" %} - -- [Carlito MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mtd2.bin){: .btn } md5hash: d3cb6f7efec201b37931139feb4bb23b -- [Huawei Rooted MTD2](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd2.img){: .btn } md5hash: 3138d2dd06a32bb92bc63610fec6fcd6 -- [Carlito MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mtd5.bin){: .btn } md5hash: 59d2dc15227d6f693a38131eca89b29e -- [Huawei Rooted MTD5](https://ma5671a.s3.nl-ams.scw.cloud/mA5671a_root_mtd5.img){: .btn } md5hash: 0e4cfdc1b96be6581869b26b48789556 -- [1224abort.bin](https://ma5671a.s3.nl-ams.scw.cloud/1224ABORT.bin){: .btn } md5hash: 10e94a4b4acdc82dec20c7904b69e5c0 -- [right.com.cn (China) 19 July 2022](https://mega.nz/file/9fpSkYTb#wNyjAj1kOLWC9HozX-gTQ-TS3VFqRYg--x1rm7RSuDg){: .btn } md5hash: 6b5e7e3c659fe3f0204340fa746ac4fc -- [right.com.cn (China) 29 Aug 2022](https://mega.nz/file/VHFFSBrT#2WhDPcdON5EHR01l6Ut35GC3sl55e4l09Z0NUo_7SWA){: .btn} md5hash: 3d357e2dc7b59c66fe61b4ddf1fb8dc0 -- [ONT FS.com GPON ONU Stick with MAC firmware / SourcePhotonics SPS-34-24T-HP-TDFO firmware](/ont-fs-com-gpon-onu-stick-with-mac) - -# General Settings and Useful Commands - -- [Huawei Rooted Firmware General Setting](/ont-huawei-ma5671a-rooted) -- [Carlito Firmware General Setting](/ont-huawei-ma5671a-carlito) -- [SourcePhotonics Firmware General Setting](/ont-huawei-ma5671a-sf) -- [right.com.cn (China) Firmware General Setting](/ont--huawei-ma5671a-china) - -## Transferring files to the stick - -{% 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 -O -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss [...]" alert="Info" icon="svg-info" color="blue" %} - -```sh -# scp rootfs.bin root@192.168.1.10:/tmp/ -``` - -## Backup of all partition - -Make a backup of all partitions, an easy way is: -- On the stick run: -```shell -cat /proc/mtd -``` -- For each mtdX run, on computer shell: -```shell -nc -l -p 1234 > mtdX.bin -``` -And in the lantiq shell: -```shell -cat /dev/mtdX | nc 192.168.1.11 1234 -``` - -## Flashing a new rootfs via SSH - -{% include alert.html content="Only the inactive image can be flashed" alert="Info" icon="svg-info" color="blue" %} - -The following commands are used to flash a new rootfs to image1 and then boot to it -```sh -# mtd -e image1 write /tmp/rootfs.bin image1 -# fw_setenv committed_image 1 -# fw_setenv image1_is_valid 1 -# reboot -``` - -{% 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" %} - -## Flashing a new rootfs via serial - -{% 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" %} - -1. Connecting the molex-serial adapter and the serial to the computer as indicated in [Root Procedure](/ont-huawei-ma5671a-web-root) -2. Open Tera Term (or any other programme capable of connecting to the serial terminal) -3. 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 -``` -FALCON => loady 0x80800000 -``` -At this point it will appear: - -{% include image.html file="ma5671a-root-13.jpg" alt="shell requiring `mtd2` upload" caption="shell requiring `mtd2` upload" %} - -{:style="counter-reset:none"} -1. From the teratem menu do `FILE` → `TRANSFER` → `YMODEM` → `SEND` → `[mtd2.bin]`. -It 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. - -1. 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 -``` -FALCON => setenv committed_image 0 -FALCON => setenv image0_is_valid 1 -FALCON => saveenv -FALCON => sf probe 0 && sf erase C0000 740000 && sf write 80800000 C0000 740000 && reset -``` - -## Cloning of mtd1 (image 0) into mtd5 (image 1) - -{% 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" %} - -The following commands are used to clone image0 to image1 and then boot to it -```sh -# cat /dev/mtd2 > /tmp/mtd2.bin -# mtd -e image1 write /tmp/mtd2.bin image1 -# fw_setenv committed_image 1 -# fw_setenv image1_is_valid 1 -# reboot -``` # Miscellaneous Links @@ -352,3 +390,6 @@ The following commands are used to clone image0 to image1 and then boot to it - [Usage GPON module SFP in Spain](https://forum.mikrotik.com/viewtopic.php?t=116364&start=300) - [Tech Info Depot Wiki](http://en.techinfodepot.shoutwiki.com/wiki/Huawei_MA5671A) +--- + +[^subunit]: The subunit are 10000 times smaller than the specified unit \ No newline at end of file -- cgit v1.2.3