Odp: SFP plugin dla LuCI
Ja nie kompiluję wersji rozwojowej której ty używasz.
Tu: https://dl.eko.one.pl/test/ jest dla wydania stabilnego.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Oprogramowanie / Software → SFP plugin dla LuCI
Strony Poprzednia 1 2 3
Zaloguj się lub zarejestruj by napisać odpowiedź
Ja nie kompiluję wersji rozwojowej której ty używasz.
Tu: https://dl.eko.one.pl/test/ jest dla wydania stabilnego.
@Cezary ethtool-full_6.10-1_aarch64_cortex-a53.ipk z twojej kompilacji działa u mnie ok.
Jednakżę --json dla komendy ethtool --json -m także nie działa, przynajmniej teraz informuje 'JSON output not available for this subcommand':
root@BananaPi_BPi-R3 /root [#]# ethtool -h
ethtool version 6.10
..
root@BananaPi_BPi-R3 /root [#]# ethtool --json -m eth1
ethtool: bad command line argument(s)
JSON output not available for this subcommand
For more information run ethtool -h
root@BananaPi_BPi-R3 /root [#]#Także pozostaje poprawić parser aby działał z tekstowym output ...
No i tu potrzebuję wsparcia ...
Output tekstowy z ethtool -m eth1 jest taki:
root@BananaPi_BPi-R3 /root [#]# ethtool -m eth1
Identifier : 0x03 (SFP)
Extended identifier : 0x04 (GBIC/SFP defined by 2-wire interface ID)
Connector : 0x01 (SC)
Transceiver codes : 0x00 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x20
Transceiver type : Ethernet: 1000BASE-LX
Transceiver type : Extended: 100G SWDM4
Encoding : 0x03 (NRZ)
BR, Nominal : 3200MBd
Rate identifier : 0x00 (unspecified)
Length (SMF,km) : 40km
Length (SMF) : 25500m
Length (50um) : 0m
Length (62.5um) : 0m
Length (Copper) : 0m
Length (OM3) : 0m
Laser wavelength : 1310nm
Vendor name : ALCATELLUCENT
Vendor OUI : 20:20:20
Vendor PN : 3FE46541AA
Vendor rev : 0001
Option values : 0x00 0x1a
Option : RX_LOS implemented
Option : TX_FAULT implemented
Option : TX_DISABLE implemented
BR margin, max : 0%
BR margin, min : 0%
Vendor SN : ALCLFAB03537
Date code : 170314_U
Optical diagnostics support : Yes
Laser bias current : 10.416 mA
Laser output power : 1.6256 mW / 2.11 dBm
Receiver signal average optical power : 0.0062 mW / -22.08 dBm
Module temperature : 50.85 degrees C / 123.53 degrees F
Module voltage : 3.2999 V
Alarm/warning flags implemented : Yes
Laser bias current high alarm : Off
Laser bias current low alarm : Off
Laser bias current high warning : Off
Laser bias current low warning : Off
Laser output power high alarm : Off
Laser output power low alarm : Off
Laser output power high warning : Off
Laser output power low warning : Off
Module temperature high alarm : Off
Module temperature low alarm : Off
Module temperature high warning : Off
Module temperature low warning : Off
Module voltage high alarm : Off
Module voltage low alarm : Off
Module voltage high warning : Off
Module voltage low warning : Off
Laser rx power high alarm : Off
Laser rx power low alarm : Off
Laser rx power high warning : Off
Laser rx power low warning : Off
Laser bias current high alarm threshold : 40.000 mA
Laser bias current low alarm threshold : 2.800 mA
Laser bias current high warning threshold : 40.000 mA
Laser bias current low warning threshold : 2.800 mA
Laser output power high alarm threshold : 3.2000 mW / 5.05 dBm
Laser output power low alarm threshold : 1.1220 mW / 0.50 dBm
Laser output power high warning threshold : 3.2000 mW / 5.05 dBm
Laser output power low warning threshold : 1.1220 mW / 0.50 dBm
Module temperature high alarm threshold : 85.00 degrees C / 185.00 degrees F
Module temperature low alarm threshold : -40.00 degrees C / -40.00 degrees F
Module temperature high warning threshold : 85.00 degrees C / 185.00 degrees F
Module temperature low warning threshold : -40.00 degrees C / -40.00 degrees F
Module voltage high alarm threshold : 3.4650 V
Module voltage low alarm threshold : 3.0410 V
Module voltage high warning threshold : 3.4650 V
Module voltage low warning threshold : 3.0410 V
Laser rx power high alarm threshold : 0.1600 mW / -7.96 dBm
Laser rx power low alarm threshold : 0.0015 mW / -28.24 dBm
Laser rx power high warning threshold : 0.1600 mW / -7.96 dBm
Laser rx power low warning threshold : 0.0015 mW / -28.24 dBm
root@BananaPi_BPi-R3 /root [#]#Zmieniłem aby wywalić --json w wywołaniu ethtool'a w /usr/libexec/rpcd/sfp na:
function get_ethtool_output(interface)
return_wrapper = {}
local ethtool_success, ethtool_return, ethtool_stdout,
ethtool_stderr = utils.executeex("ethtool -m utils.quote_arg(interface)")
..Zmieniłem parsowanie dla 'Vendor name' w /www/luci-static/resources/view/network/sfp.js
if (typeof(module_info) == "object") {
if ("Vendor name" in module_info) {
let vendorname_text = module_info["Vendor name"]
fields.set(_("Vendor"), vendorname_text);
}
Co jest nie tak że nie działa?
Nie mam kolejnej linii informacyjnej z 'Vendor' ...
Z koleji jak zmodyfikuję linię wywołania ethtool tak:
ethtool_stderr = utils.executeex("ethtool -m \"" .. utils.quote_arg(interface) .. "\"")to nie ma parsowania, jak na screen -->> https://pasteboard.co/tUV4Q3PdzKSE.png
Co radzicie?
1.
utils.executeex("ethtool -m utils.quote_arg(interface)")
to jest źle bo woła ethtool -m utils.quote_arg(interface)
To są same podstawy jakiegokolwiek programowania. Jak masz
utils.executeex("ethtool -m " + utils.quote_arg(interface) itd
to zawartość zmienna interface jest dodawana do ciągu znaków i razem tworzą ciąg znaków który do wykonania będzie interpretowany jako ethtool -m eth1 np. Jak robiłeś "ethtool -m utils.quote_arg(interface)" to całość jest traktowana jako polecenie i które jest bzdurą, bo ethtool nie ma argumentu o nazwie "utils.quote_arg(interface)".
2.
if (typeof(module_info) == "object") {
if ("Vendor name" in module_info) {
let vendorname_text = module_info["Vendor name"]
fields.set(_("Vendor"), vendorname_text);
}
A co zwraca ubus call sfp status? Czy tam jest to wołane w js? Jeżeli nic to nadal parser źle robiłeś.
3.
Radzę żebyś przejrzał kod. Bo źle w takim razie interpretujesz dane.
Przy takim wpisie:
ethtool_stderr = utils.executeex("ethtool --json -m \"" .. utils.quote_arg(interface) .. "\"")'ubus call sfp status' zwraca
root@BananaPi_BPi-R3 /root [#]# ubus call sfp status
{
"sfp2": {
"status": {
"present": false,
"link_up": false
}
},
"eth1": {
"status": {
"txfault": false,
"link_up": true,
"present": true,
"rxlos": false
}
}
}
root@BananaPi_BPi-R3 /root [#]#zaś przy takim wpisie
ethtool_stderr = utils.executeex("ethtool -m " + utils.quote_arg(interface))'ubus call sfp status' zwraca:
root@BananaPi_BPi-R3 /root [#]# ubus call sfp status
Command failed: No response
root@BananaPi_BPi-R3 /root [#]#No więc nie wiem jak ma być poprawnie bez --json ;(
Pozdr,
Ubus zawsze zwraca jsona. Więc to co masz w lua ma zwracać jsona. Więc to co zwraca ethtool -m musisz przerobić na jsona żeby mógł być zwrócony jako json. Nie czysty tekst, tylko json - wiec albo parsujesz ten tekst co wyszedł z ethtoola i przerabiasz go na jsona albo zwracasz jsona z tekstem a parsujesz to w javaskrypcie na stronie.
Rozumiem. A możesz skompilować ethtool'a z tymi patchami w takim razie:
->> https://patchwork.kernel.org/project/ne … se.com.au/
![]()
Późnym wieczorem.
Wielkie dzięki ...
Ta łatka nie wchodzi ani na wersje 6.10, ani na aktualne źródła. A średnio mi się chce przerabiać kod.
A jak sprawdzić jaka wersja była ethtool'a w okolicach daty: 2022.07.04 ?
Wejdź na gita z ethtoolem i przeszukaj commity.
O znalazłem, taka jest ostatnia przed 2022.07.04 --> https://git.kernel.org/pub/scm/network/ … g/?h=v5.18
Kolejna jest z sierpnia 2022. Spróbowałbyś skompilować z patchami?
Pozdr,
Nie wchodzą.
patching file ethtool.c
Hunk #1 FAILED at 4897.
Hunk #2 FAILED at 4916.
Hunk #3 FAILED at 5925.
3 out of 3 hunks FAILED -- saving rejects to file ethtool.c.rej
patching file sff-common.c
Hunk #1 FAILED at 62.
Hunk #2 succeeded at 324 with fuzz 1.
1 out of 2 hunks FAILED -- saving rejects to file sff-common.c.rej
patching file sff-common.h
Hunk #1 FAILED at 134.
Hunk #2 succeeded at 199 with fuzz 2.
1 out of 2 hunks FAILED -- saving rejects to file sff-common.h.rej
patching file sfpdiag.c
Hunk #2 succeeded at 240 with fuzz 1.
Hunk #3 FAILED at 304.
Hunk #4 FAILED at 325.
2 out of 4 hunks FAILED -- saving rejects to file sfpdiag.c.rej
patching file sfpid.c
Hunk #1 FAILED at 24.
Hunk #2 FAILED at 40.
Hunk #3 FAILED at 276.
Hunk #4 FAILED at 423.
Hunk #5 FAILED at 485.
Hunk #6 FAILED at 500.
6 out of 6 hunks FAILED -- saving rejects to file sfpid.c.rejA spróbuj proszę na jedna niżej 5.17 bo od tej wersji ethtoola dodali JSON Support ...
-->> https://git.kernel.org/pub/scm/network/ … g/?h=v5.17
albo ten commit
--> https://git.kernel.org/pub/scm/network/ … 68132e560c
Nie, serio starczy tego. Nie mam czasu na zabawy, tym bardziej że oficjalnie i tak tego od dwóch lat nie ma w ethtoolu. Napisz parser do tekstu.
Nie ma szans, że napiszę sam parser do tekstu ... ;(
@Cezary ostatnia prośba w temacie. Ogarnąłem ten patch --json dla --module-info po kontakcie z autorami.
Wchodzi najwyżej na wersję ethtool-6.3 bez błedów (patchują się poprawnie wersje ethtool 5.19 do 6.3)
root@vuduo4k:~# cd ethtool-6.3
root@vuduo4k:~/ethtool-6.3# ls -al
drwxrwxr-x 6 root root 4096 Sep 20 22:20 .
drwx------ 9 root root 4096 Sep 20 22:20 ..
-rw-rw-r-- 1 root root 294 May 8 2023 .gitignore
-rw-rw-r-- 1 root root 296 May 8 2023 AUTHORS
-rw-rw-r-- 1 root root 18092 May 8 2023 COPYING
-rw-rw-r-- 1 root root 11584 May 8 2023 ChangeLog
-rw-rw-r-- 1 root root 100 May 8 2023 LICENSE
-rw-rw-r-- 1 root root 2526 May 8 2023 Makefile.am
-rw-rw-r-- 1 root root 29511 May 8 2023 NEWS
-rw-rw-r-- 1 root root 127 May 8 2023 README
-rw-rw-r-- 1 root root 7255 May 8 2023 amd8111e.c
-rw-rw-r-- 1 root root 624 May 8 2023 at76c50x-usb.c
-rwxrwxr-x 1 root root 185 May 8 2023 autogen.sh
-rw-rw-r-- 1 root root 3530 May 8 2023 bnxt.c
-rw-rw-r-- 1 root root 29353 May 8 2023 cmis.c
-rw-rw-r-- 1 root root 7611 May 8 2023 cmis.h
-rw-rw-r-- 1 root root 5214 May 8 2023 common.c
-rw-rw-r-- 1 root root 1398 May 8 2023 common.h
-rw-rw-r-- 1 root root 3305 May 8 2023 configure.ac
-rw-rw-r-- 1 root root 4027 May 8 2023 cpsw.c
-rw-rw-r-- 1 root root 18509 May 8 2023 de2104x.c
-rw-rw-r-- 1 root root 31007 May 8 2023 dsa.c
-rw-rw-r-- 1 root root 6649 May 8 2023 e100.c
-rw-rw-r-- 1 root root 27571 May 8 2023 e1000.c
-rw-rw-r-- 1 root root 7601 May 8 2023 et131x.c
-rw-r--r-- 1 root root 46327 Sep 20 21:18 ethtool-1-2-ethtool-add-JSON-output-to---module-info.diff
-rw-r--r-- 1 root root 397 Sep 20 21:18 ethtool-2-2-ethtool-remove-restriction-on-ioctl-commands-having-JSON-output.diff
-rw-rw-r-- 1 root root 47824 May 8 2023 ethtool.8.in
-rw-rw-r-- 1 root root 161435 May 8 2023 ethtool.c
-rw-rw-r-- 1 root root 817 May 8 2023 ethtool.spec.in
-rw-rw-r-- 1 root root 7069 May 8 2023 fec.c
-rw-rw-r-- 1 root root 2584 May 8 2023 fec_8xx.c
-rw-rw-r-- 1 root root 2321 May 8 2023 fjes.c
-rw-rw-r-- 1 root root 9457 May 8 2023 fsl_enetc.c
-rw-rw-r-- 1 root root 8807 May 8 2023 ibm_emac.c
-rw-rw-r-- 1 root root 29709 May 8 2023 igb.c
-rw-rw-r-- 1 root root 11221 May 8 2023 igc.c
-rw-rw-r-- 1 root root 12925 May 8 2023 internal.h
-rw-rw-r-- 1 root root 5049 May 8 2023 ixgb.c
-rw-rw-r-- 1 root root 39275 May 8 2023 ixgbe.c
-rw-rw-r-- 1 root root 4368 May 8 2023 ixgbevf.c
-rw-rw-r-- 1 root root 4948 May 8 2023 json_print.c
-rw-rw-r-- 1 root root 1757 May 8 2023 json_print.h
-rw-rw-r-- 1 root root 7518 May 8 2023 json_writer.c
-rw-rw-r-- 1 root root 3000 May 8 2023 json_writer.h
-rw-rw-r-- 1 root root 2276 May 8 2023 lan743x.c
-rw-rw-r-- 1 root root 4113 May 8 2023 lan78xx.c
-rw-rw-r-- 1 root root 679 May 8 2023 list.h
-rw-rw-r-- 1 root root 13926 May 8 2023 marvell.c
-rw-rw-r-- 1 root root 34489 May 8 2023 natsemi.c
drwxrwxr-x 2 root root 4096 May 8 2023 netlink
-rw-rw-r-- 1 root root 6943 May 8 2023 pcnet32.c
-rw-rw-r-- 1 root root 36777 May 8 2023 qsfp.c
-rw-rw-r-- 1 root root 21840 May 8 2023 qsfp.h
-rw-rw-r-- 1 root root 20822 May 8 2023 realtek.c
-rw-rw-r-- 1 root root 42460 May 8 2023 rxclass.c
drwxrwxr-x 2 root root 4096 May 8 2023 scripts
-rw-rw-r-- 1 root root 140808 May 8 2023 sfc.c
-rw-rw-r-- 1 root root 9430 May 8 2023 sff-common.c
-rw-rw-r-- 1 root root 6911 May 8 2023 sff-common.h
-rw-rw-r-- 1 root root 10245 May 8 2023 sfpdiag.c
-rw-rw-r-- 1 root root 16175 May 8 2023 sfpid.c
drwxrwxr-x 3 root root 4096 May 8 2023 shell-completion
-rw-rw-r-- 1 root root 5246 May 8 2023 smsc911x.c
-rw-rw-r-- 1 root root 2380 May 8 2023 stmmac.c
-rw-rw-r-- 1 root root 13829 May 8 2023 test-cmdline.c
-rw-rw-r-- 1 root root 7229 May 8 2023 test-common.c
-rw-rw-r-- 1 root root 24440 May 8 2023 test-features.c
-rw-rw-r-- 1 root root 939 May 8 2023 tg3.c
-rw-rw-r-- 1 root root 5034 May 8 2023 tse.c
drwxrwxr-x 3 root root 4096 May 8 2023 uapi
-rw-rw-r-- 1 root root 680 May 8 2023 vioc.c
-rw-rw-r-- 1 root root 5908 May 8 2023 vmxnet3.c
root@vuduo4k:~/ethtool-6.3# patch -p1 < ethtool-1-2-ethtool-add-JSON-output-to---module-info.diff
patching file ethtool.c
patching file sff-common.c
patching file sff-common.h
patching file sfpdiag.c
patching file sfpid.c
root@vuduo4k:~/ethtool-6.3# patch -p1 < ethtool-2-2-ethtool-remove-restriction-on-ioctl-commands-having-JSON-output.diff
patching file ethtool.c
root@vuduo4k:~/ethtool-6.3#Wystawiłem spatchowany ethtool-6.3_patched.tar.gz
-->> https://crivolt.pl/ethtool-6.3_patched.tar.gz
Gorąca prośba jak znajdziesz chwilę o skompilowanie dla BPI-R3, nie mam jak postawić środowiska do kompilacji ![]()
aby to zrobić samemu.
Z góry dziękuję i sorki za zawracanie d ... ![]()
Pozdr,
Jest w https://dl.eko.one.pl/test/
Ślicznie dziękuję.
ethtool 6.3 z patchem działa tak dla mojej wkładki GPON/SFP:
root@BananaPi_BPi-R3 /root [#]# opkg install /tmp/ethtool-full_6.3-1_aarch64_cortex-a53.ipk
Multiple packages (libgcc1 and libgcc1) providing same name marked HOLD or PREFER. Using latest.
Installing ethtool-full (6.3-1) to root...
Configuring ethtool-full.
root@BananaPi_BPi-R3 /root [#]# ethtool --json -m eth1
[
"identifier": 3,
"identifier_description": "SFP",
"extended_identifier": 4,
"extended_identifier_description": "GBIC/SFP defined by 2-wire interface ID",
"connector": 1,
"connector_description": "SC",
"transceiver_codes": [ 0,0,0,2,0,0,0,0,32 ],
"transceiver_types": [ "Ethernet: 1000BASE-LX","Extended: 100G SWDM4" ],
"encoding": 3,
"encoding_description": "NRZ",
"bitrate_nominal": 3200,
"rate_identifier": 0,
"rate_identifier_description": "unspecified",
"lengths": {
"smf_km": {
"value": 40,
"unit": "km"
},
"smf": {
"value": 25500,
"unit": "m"
},
"50um": {
"value": 0,
"unit": "m"
},
"62_5um": {
"value": 0,
"unit": "m"
},
"copper": {
"value": 0,
"unit": "m"
},
"om3": {
"value": 0,
"unit": "m"
}
},
"laser_wavelength": 1310,
"vendor_name": "ALCATELLUCENT",
"vendor_oui": "20:20:20",
"vendor_pn": "3FE46541AA",
"vendor_rev": "0001",
"option_byte1": 0,
"option_byte2": 26,
"option_descriptions": [ "RX_LOS implemented","TX_FAULT implemented","TX_DISABLE implemented" ],
"br_margin_max": 0,
"br_margin_min": 0,
"vendor_sn": "ALCLFAB03537",
"date_code": "170314_U"
},
"optical_diagnostics_supported": true,
"bias_current": 10.226,
"tx_power": 1.6048,
"module_temp": 50.8477,
"module_voltage": 3.2999,
"rx_power": 0.0064,
"rx_power_is_average": true,
"supports_alarms": true,
"alarms": {
"laser_bias_current_high_alarm": false,
"laser_bias_current_low_alarm": false,
"laser_bias_current_high_warning": false,
"laser_bias_current_low_warning": false,
"laser_output_power_high_alarm": false,
"laser_output_power_low_alarm": false,
"laser_output_power_high_warning": false,
"laser_output_power_low_warning": false,
"module_temperature_high_alarm": false,
"module_temperature_low_alarm": false,
"module_temperature_high_warning": false,
"module_temperature_low_warning": false,
"module_voltage_high_alarm": false,
"module_voltage_low_alarm": false,
"module_voltage_high_warning": false,
"module_voltage_low_warning": false,
"laser_rx_power_high_alarm": false,
"laser_rx_power_low_alarm": false,
"laser_rx_power_high_warning": false,
"laser_rx_power_low_warning": false
},
"thresholds": {
"laser_bias_current": {
"high_alarm": 40,
"low_alarm": 2.8,
"high_warning": 40,
"low_warning": 40
},
"laser_output_power": {
"high_alarm": 3.2,
"low_alarm": 1.122,
"high_warning": 1.122,
"low_warning": 1.122
},
"module_temperature": {
"high_alarm": 85,
"low_alarm": -40,
"high_warning": 85,
"low_warning": 85
},
"module_voltage": {
"high_alarm": 3.465,
"low_alarm": 3.041,
"high_warning": 3.465,
"low_warning": 3.041
},
"laser_rx_power": {
"high_alarm": 0.16,
"low_alarm": 0.0015,
"high_warning": 0.0015,
"low_warning": 0.0015
}
}root@BananaPi_BPi-R3 /root [#]#
root@BananaPi_BPi-R3 /root [#]# ubus call sfp status
Command failed: No response
root@BananaPi_BPi-R3 /root [#]#Ale jest problem bo 'ubus call sfp status' nic nie zwraca : Command failed: No response (plugin nic nie wyświetla) i teraz nie wiem w czym problem i co sprawdzić.
Czy może to problem nawiasów [ { lub ich braki w odpowiedzi json ethtool'a? Bo wydaje mi się, że na poczatku brakuje tego { a na końcu tego [.
Przygotowałem jeszcze z patchem wersje ethtool 5.19 i bardzo Cię proszę o kompilację. Może w tej będzie lepiej dla mojej SFP.
-->> https://crivolt.pl/ethtool-5.19_patched.tar.gz
Co myślisz?
Plik lua nie zwraca poprawnego jsona, już ci to pisałem. Ten wynik zwracany przez ethtoola też nie jest poprawnym jsonem składniowo. Trzeba było pisać parser tekstu.
Tak myślałem, że to wina składni. Ogólnie teraz nie mam jak (brak czasu) tego przepisać, ale w zimowe wieczory spróbuję to opanować i przepisać by było bez LUA, wprost parsowane z tekstu z ethtool'a i tekstu plików debug/sfp-x/state, parsowanie na strone LuCI skryptami JS. Wiele się nauczyłem z tych zabaw z json i LUA oraz patchowaniem źródeł póki co. Tymczasem potrzebuję by to działało z tego co mam na teraz, także spróbuję znaleźć błędy wpisywania braku nawiasów [ { } ] w pliku sfpid.c/sff-common.c/sfpdiag.c i poprawić. Akurat C+ jest dla mnie bardziej 'friendly'.
Skompilujesz mi jeszcze raz potem ethtoola-6.3_patched z moimi poprawkami ?
@Cezary gorąca prośba o skompilowanie tej wersji ethtool'a 6.3 po moich modach plików (dla składni json dla -m ) dla BPI-R3:
-->> https://crivolt.pl/ethtool-6.3_patched_ … 9.2024.zip
Dzięki.
Ok, na teraz ogarnąłem temat.
Skombinowałem sobie wreszcie dla kompilacji OpenWRT dysk SSD na USB 3.0, postawiłem na nim w VB Ubuntu 24.04.1 LTS. Zainstalowałem wg twojego opisu środowisko OpenWRT wg https://eko.one.pl/?p=openwrt-kompilacja
oraz źródła OpenWRT 23.05.04, skompilowałem całe środowisko i obraz dla BPI-R3 wraz z LuCI i ethtool'em, wszystko przebiegło ok.
Poprawiłem błędy składni po patch'ach w plikach .c ethtool-6.3. Skompilowałem pakiet z moim poprawkami i patchami dla BPi-R3.
No i wszystko ładnie ruszyło, wynik ubus call sfp status jest:
root@BananaPi_BPi-R3 /root [#]# ubus call sfp status
{
"sfp2": {
"status": {
"present": false,
"link_up": false
}
},
"eth1": {
"status": {
"txfault": false,
"link_up": true,
"present": true,
"rxlos": false
},
"ethtool": {
"encoding": 3,
"rate_identifier_description": "unspecified",
"thresholds": {
"laser_output_power": {
"high_alarm": 3.200000,
"high_warning": 1.122000,
"low_alarm": 1.122000,
"low_warning": 1.122000
},
"module_temperature": {
"high_alarm": 85,
"high_warning": 85,
"low_alarm": -40,
"low_warning": 85
},
"module_voltage": {
"high_alarm": 3.465000,
"high_warning": 3.465000,
"low_alarm": 3.041000,
"low_warning": 3.041000
},
"laser_bias_current": {
"high_alarm": 40,
"high_warning": 40,
"low_alarm": 2.800000,
"low_warning": 40
},
"laser_rx_power": {
"high_alarm": 0.160000,
"high_warning": 0.001500,
"low_alarm": 0.001500,
"low_warning": 0.001500
}
},
"option_byte1": 0,
"laser_wavelength": 1310,
"bias_current": 10.108000,
"lengths": {
"smf": {
"value": 25500,
"unit": "m"
},
"om3": {
"value": 0,
"unit": "m"
},
"copper": {
"value": 0,
"unit": "m"
},
"smf_km": {
"value": 40,
"unit": "km"
},
"50um": {
"value": 0,
"unit": "m"
},
"62_5um": {
"value": 0,
"unit": "m"
}
},
"rate_identifier": 0,
"module_temp": 51.847700,
"option_descriptions": [
"RX_LOS implemented",
"TX_FAULT implemented",
"TX_DISABLE implemented"
],
"encoding_description": "NRZ",
"date_code": "170314_U",
"br_margin_min": 0,
"bitrate_nominal": 3200,
"option_byte2": 26,
"extended_identifier": 4,
"connector_description": "SC",
"alarms": {
"laser_rx_power_high_alarm": false,
"laser_output_power_low_warning": false,
"laser_output_power_low_alarm": false,
"laser_output_power_high_alarm": false,
"module_temperature_high_warning": false,
"module_voltage_low_alarm": false,
"module_temperature_low_warning": false,
"laser_bias_current_high_warning": false,
"laser_rx_power_low_alarm": false,
"laser_rx_power_high_warning": false,
"module_temperature_low_alarm": false,
"module_temperature_high_alarm": false,
"module_voltage_high_warning": false,
"laser_bias_current_low_warning": false,
"laser_bias_current_high_alarm": false,
"laser_rx_power_low_warning": false,
"laser_output_power_high_warning": false,
"module_voltage_low_warning": false,
"module_voltage_high_alarm": false,
"laser_bias_current_low_alarm": false
},
"vendor_rev": "0001",
"br_margin_max": 0,
"vendor_name": "ALCATELLUCENT",
"transceiver_codes": [
0,
0,
0,
2,
0,
0,
0,
0,
32
],
"vendor_oui": "20:20:20",
"transceiver_types": [
"Ethernet: 1000BASE-LX",
"Extended: 100G SWDM4"
],
"identifier_description": "SFP",
"connector": 1,
"optical_diagnostics_supported": true,
"supports_alarms": true,
"extended_identifier_description": "GBIC/SFP defined by 2-wire interface ID",
"vendor_sn": "ALCLFAB03537",
"rx_power": 0.006800,
"module_voltage": 3.299900,
"tx_power": 1.562500,
"rx_power_is_average": true,
"identifier": 3,
"vendor_pn": "3FE46541AA"
}
}
}
root@BananaPi_BPi-R3 /root [#]#Patch --json dla -m i moje poprawki działają poprawnie. Tak finalnie wygląda plugin 'sfp-diagnostics-luci' także po poprawkach i dodaniu kilku rzeczy dla różnych SFP w LuCI -> Sieć -> SFP





Dla zainteresowanych wystawiam gotowe paczki i instrukcję instalacji dla BPI-R3:
1. Zainstalować w OpenWRT pakiety: rpcd-mod-ucode luci-mod-admin-full lua-penlight lua poprzez:
opkg update
opkg install rpcd-mod-ucode luci-mod-admin-full lua-penlight lua
2. Skopiować do routera do /tmp plik 'sfp-diagnostics-luci_BPI-R3.zip
-->> sfp-diagnostics-luci_BPI-R3.zip
3. Rozpakować pliki z sfp-diagnostics-luci_BPI-R3/ w odpowiednie katalogi do routera z OpenWRT
4. Skopiować do routera do /tmp patchowany oraz poprawiony i skompilowany plik ethtool-full_6.3-1_aarch64_cortex-a53.ipk
-->> ethtool-full_6.3-1_aarch64_cortex-a53.ipk
5. Zainstalować patchowany ethtool-6.3: ethtool-full_6.3-1_aarch64_cortex-a53.ipk (z patch JSON dla 'ethtool --json -m') poprzez:
opkg remove ethtool-full lub opkg remove ethtool (jeśli mieliśmy jakikolwiek ethtool już zainstalowany)
opkg install /tmp/ethtool-full_6.3-1_aarch64_cortex-a53.ipk
Plugin dostępny pod LuCI -> Sieć -> SFP
Jak będzie chwila w zimowe wieczory spróbuję przepisać parsery by nie korzystały z LUA/JSON tylko wprost z output TXT z ethtool'a i plików debug/sfp-x i parsowanie na stronę LuCI skryptami JS. Nie będzie wtedy trzeba instalować patch'owanego ethtool'a, tylko najnowsze dostępne oficjalne buildy.
Pozdrawiam.
Zmobilizowałem się wreszcie po aktualizacjach swoich sprzętów do OpenWRT 25.12 na upgrade pakietu SFP dla LuCI.
Przepisałem go wreszcie z LUA do JavaScript i dodałem kilka rzeczy, tak się aktualnie prezentuje w OpenWRT 25.12:





Historia wersji pakietu JavaScript i zmian - sfp-diagnostics-luci-js:
v1 - wersja LUA (sfp-diagnostics-luci_BPI-R3.tar) - z poprzedniego OpenWRT 23.05
v2 - przepisana wersja z LUA do JavaScript ale na ethtool z obsługą JSON: ethtool --json -m sfp1 (ethtool-full-bin-6.3-r1.apk)
v3 - wersja parsera z obsługą ethtool bez JSON -> standardowe starsze i nowsze ethtool działają: ethtool -m sfp1 (np. z repo), dopisany parser z txt, dopisane tłumaczenie English (en)
v4 - dodane wykresy TX / RX Power, Temperature
Instalacja w OpenWRT 25.12 z APK:
1. Zainstalować w OpenWRT pakiety: rpcd-mod-ucode, luci-mod-admin-full, libc
2. Skopiować do routera do /tmp plik 'sfp-diagnostics-luci-js-4-r1.apk'
3. Zainstalować sfp-diagnostics-luci-js-4-r1.apk w OpenWRT 25.12
4. Zainstalować domyślną wersję ethtool-full z repo: apk add ethtool-full (aktualnie: ethtool-full-6.15-r1)
4a. Zrestartować 'rpcd'
Plugin dostępny pod LuCI -> Sieć -> SFP
Opcjonalnie - jesli chcemy inny ethtool, np. starszy 6.3 (który pokazuje więcej danych technicznych wkładek SFP)
5. Skopiować do routera do /tmp patchowany i skompilowany plik 'ethtool-full-bin-6.3-r1.apk'
6. Zainstalować patchowany ethtool-6.3 -> ethtool-full-bin-6.3-r1.apk (ma też patch JSON dla 'ethtool --json -m') poprzez:
apk del ethtool-full
apk del ethtool (jesli mieliśmy jakikolwiek ethtool niepełny już zainstalowany)
add --allow-untrusted /tmp/ethtool-full-bin-6.3-r1.apk
Instalacja j/w dla BPI-R3 z linii komend (komplet):
------------------------------------------------------------------------------------------------------
apk update
apk add rpcd-mod-ucode luci-mod-admin-full libc
apk add ethtool-full (lub j/w wg pkt. 5 i 6)
apk add --allow-untrusted /tmp/sfp-diagnostics-luci-js-4-r1.apk
rm -rf /tmp/luci-modulecache/
/etc/init.d/rpcd restart
------------------------------------------------------------------------------------------------------
Linki do pobrania -> wersja v4 - sfp-diagnostics-luci-js-4-r1:
-->> sfp-diagnostics-luci-js-4-r1.apk lub sfp-diagnostics-luci-js-4-r1.apk
-->> ethtool-full-bin-6.3-r1.apk lub ethtool-full-bin-6.3-r1.apk
Testowane na BananaPi R3 z OpenWRT 25.12 i taka wersja dla tego routera jest w paczkach j/w.
Dla innych trzeba sobie dopasować plik /etc/sfp.json do swojego routera po zainstalowaniu paczki.
Pozdrawiam.
Strony Poprzednia 1 2 3
Zaloguj się lub zarejestruj by napisać odpowiedź
eko.one.pl → Oprogramowanie / Software → SFP plugin dla LuCI
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc