janh / go-dsl Goto Github PK
View Code? Open in Web Editor NEWLibrary and application for reading xDSL stats
License: Mozilla Public License 2.0
Library and application for reading xDSL stats
License: Mozilla Public License 2.0
Interpretation of Hlog and QLN plots mostly depends on looking at the precise curves and deviations from theoretical curve "forms". This gets easier if the plot is centered more on the actual range of the individual data compared the the current fixed? and quite generous limits (QLN: -70 to -160 dBm/Hz; Hlog: 0 to -100 dB)
Also a genuine question, why displaying the QLN as bar and not (as is done customarily) as line graph?
Final thought: the up/down qualification in the plots could be slightly more prominent, the current color scheme is quite elegant, but also quite subtle. Maybe turn up the color for these and plot these behind the actual data (currently they seem overlayed)?his would require different colors for max and min on the SNR plots though). But this is mostly cosmetic and a matter of preference, so if you prefer your current design, that also works.
The new error plots for occurrence different error types over a day are excellent!
Nitpick: on my version it is not clear which of the plots shows the up and which the down direction.
I was able to get go-dsl working with my ALLNET ALL-BM300 modem after applying some quirks. I don't have a straight up patch because some of the quirks go beyond what go-dsl does right now, and others conflict with some of its assumptions. Here is what I had to do:
$
, not #
(lantiq/telnet.go line 37).commandLegacy
entries in lantiq/data.go to get more data:LineFeatureStatus_US dataItem `command:"lfsg 0" commandLegacy:"lfsg 0 0"`
LineFeatureStatus_DS dataItem `command:"lfsg 1" commandLegacy:"lfsg 0 1"`
G997_RateAdaptationStatus_US dataItem `command:"g997rasg 0" commandLegacy:"g997rasg 0 0"`
G997_RateAdaptationStatus_DS dataItem `command:"g997rasg 1" commandLegacy:"g997rasg 0 1"`
BandBorderStatus_US dataItem `command:"bbsg 0" commandLegacy:"bbsg 0 0"`
BandBorderStatus_DS dataItem `command:"bbsg 1" commandLegacy:"bbsg 0 1"`
commandLegacy
entries for my modem:G997_XTUSystemEnablingStatus dataItem `command:"g997xtusesg" commandLegacy:"g997xtusesg 0"`
0x
prefix on the state code in line 235, but only to strip it, not to distinguish between hex and decimal numbers. This is wrong for my modem. The code has no 0x
prefix and it isn't hex, but decimal. Decoding it as such in line 239 gave me the correct line state.I'm experiencing scaling issues which resemble the ones solved with #14: the graphs seem to be cut off on the right border relative to the legends.
My modem is a Technicolor DGA4132 with custom firmware based on the Broadcom chipset with xdslctl
.
hello
I'm trying to connect to Zte h168n and with this command "dsl -d mediatek_telnet -u root 192.168.1.1" and it gives me this error no prompt detected
DSLstats for broadcom modems has a very interesting plot for diagnosing potential problem, in which it displays the count of Bitloading changes per carrier. I am not sure how this is implemented, but in theory it should be enough to take the absolute difference between consecutive bitloading data and just plot the count of these bitswap events per carrier. That will not be 100% correct (e.g. two bitswaps between samples might cancel each other out) but should show problematic carriers relative well.
So I "secured" access to my private keys behind a passphrase and the CLI application sort of works:
computer:go-dsl user$ ./dsl
Connecting… passphrase required
Fingerprint: SHA256:rcl9qcANmVORxAH5pPkMDL8TCtu+Z9jDNVmfTKLdjqo
Passphrase:
Authenticating… done
Loading data… done
State: Showtime
Mode: VDSL2 Profile 17a
Uptime: 32 days, 16 hours, 11 minutes
Remote: Broadcom 12.4.127 (194.127)
Modem: Infineon 5.9.1.4.0.7
Actual rate: 116797 kbit/s 36998 kbit/s
Attainable rate: 140083 kbit/s 40043 kbit/s
MINEFTR: 81349 kbit/s 1730261 kbit/s
Bitswap: on on
Rate adaption: off off
Interleaving: 0.14 ms 0 ms
INP: 40.0 symbols 44.0 symbols
Retransmission: on on
Vectoring: full full
Attenuation: 9.8 dB 8.3 dB
SNR margin: 12.5 dB 8.5 dB
Transmit power: 14.5 dBm -3.5 dBm
RTX TX Count: 335827 37924
RTX C Count: 32108 223166
RTX UC Count: 762 1487052
FEC Count: 0 4298
CRC Count: 23 321
ES Count: 5 128
SES Count: 1 76
but when I try the same with dsl-gui I get a prompt "The device requests a password" which neither accepts:
computer:go-dsl user$ ./dsl-gui
setting password failed: no password required
setting password failed: no password required
setting password failed: no password required
Which is a pity as the 4 "spectral" plots are really nice and informative.
Unable to read DSL Stats of the Speedport Pro Plus running Firmware 120141.5.0.013.0
PS C:\Users\Maxim\Downloads\go-dsl-master> ./dsl -d speedport speedport.ip
Connecting… failed: request for /html/login/index.html failed with status 307
PS C:\Users\Maxim\Downloads\go-dsl-master> ./dsl -d speedport 10.10.1.1
Connecting… failed: request for /html/login/index.html failed with status 307
Maybe you could add a screen shot of the GUI view of your tool to the github description, so potential users can immediately see what they can expect?
Have you considered publishing a docker container providing stats via webserver?
go-dsl will not allow to save the current data if it detected an 'error condition' like modem crash or unscheduled power down of the modem. It could be helpful in such situations if one could still save the data that exists at that point.
First, thank you for creating this project.
TP Link has various modems with Broadcom, Mediatek, Lantiq chips.
Their products can be accessed for additional xDSL stats.
It requires modding the firmware as seen here:
https://github.com/sta-c0000/tpconf_bin_xml
Once that is done, root access is granted, through telnet at port 1023.
It seems go-dsl defaults to port 23 for telnet access.
By editing internal/telnet/client.go line 140 from :23 to :1023
I can use go-dsl to access my Bradcom based TP Link modem through telnet.
It would be great if this program could allow a parameter to specify telnet port.
Thank you.
Hi,
the Draytek Vigor 167 Fimware 5.2 promt is "Username:" instead of "Account:" so no promt detected error is thrown.
Thanks!
baba
Please have a look at:
The channel characteristic plot looks like the upload data is misaligned (and potentially mis-scaled), this might be a peculiarity of the Fritzbox output for profile 35b or some other minor issue. Maybe worth looking into?
P.S.: The really cool thing about this plot is that is actually shows the QLN and hlog plots, something FritzOS seems to consider unimportant even though the Australians make a point about especially hlog's utility in diagnosing line faults....
Great project have used it so far with a Vigor 130. But has now been replaced by a Bintec Be.IP Plus.
Are there any plans to support this?
The manufacturer has an example incl. description here: https://knowledgebase.bintec-elmeg.com/knowledgebase/dsl-ermitteln-der-leitungsqualitaet/
I could also provide my own logs retrieved via telnet and ssh.
I've tried the following commands:
./dsl -d speedport speedport.ip -- Result: Connecting… failed: no challenge found
./dsl -d sagemcom speedport.ip -- Result: Connecting… failed: request for /js/gui-core.js failed with status 404
Am I doing something wrong?
I seem to run into some issue when building dsl-gui (the CLI version compiles just fine)
bash-3.2$ go build -o dsl ./cmd
bash-3.2$ go build -tags gui -o dsl-gui ./cmd
# github.com/webview/webview
../../../go/pkg/mod/github.com/webview/[email protected]/webview.go:15:10: fatal error: 'stdlib.h' file not found
#include <stdlib.h>
^~~~~~~~~~
1 error generated.
bash-3.2$ go version
go version go1.19.4 darwin/amd64
This is probably a pilot's error from my side, but maybe you have an idea how I could fix this?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.