[Solved] VDSL low speed ZyXEL P-2812HNU-F1

Hi all, I am trying to get my Zyxel P-2812HNU-F1 to work reliably with my VDSL connection (NL KPN Telfort) and I am suffering from lowish speeds. I am running 19.07.2.

I have tried a relatively recent firmware 5.9 from a Fritz image, but have now settled on 5.7.5.6.1.7 which is the exact version that the stock (Telfort-branded) 2812 firmware uses and what the stock (Telfort) ExperiaBox v8 uses. Thanks for that @Mijzelf :slight_smile:

Both modems on stock firmware are able to get something along these lines:

current rate upstream: 31423 kbps
current rate downstream: 108171 kbps
attainable rate upstream: 31439 kbps
attainable rate downstream: 108841 kbps
linetype: VDSL
Profile: 17a

But with OpenWRT on the 2812 I get:

ATU-C Vendor ID:                          Broadcom 177.191
ATU-C System Vendor ID:                   Broadcom
Chipset:                                  Lantiq-VRX200
Firmware Version:                         5.7.5.6.1.7
API Version:                              4.17.18.6
XTSE Capabilities:                        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2
Annex:                                    B
Line Mode:                                G.993.5 (VDSL2 with down- and upstream vectoring)
Profile:                                  17a
Line State:                               UP [0x801: showtime_tc_sync]
Forward Error Correction Seconds (FECS):  Near: 0 / Far: 5
Errored seconds (ES):                     Near: 0 / Far: 3
Severely Errored Seconds (SES):           Near: 0 / Far: 0
Loss of Signal Seconds (LOSS):            Near: 0 / Far: 0
Unavailable Seconds (UAS):                Near: 42932956 / Far: 42932956
Header Error Code Errors (HEC):           Near: 0 / Far: 0
Non Pre-emtive CRC errors (CRC_P):        Near: 0 / Far: 0
Pre-emtive CRC errors (CRCP_P):           Near: 0 / Far: 0
Power Management Mode:                    L0 - Synchronized
Latency [Interleave Delay]:               0.14 ms [Fast]   0.0 ms [Fast]
Data Rate:                                Down: 48.201 Mb/s / Up: 22.237 Mb/s
Line Attenuation (LATN):                  Down: 9.2 dB / Up: 7.8 dB
Signal Attenuation (SATN):                Down: 9.3 dB / Up: 7.7 dB
Noise Margin (SNR):                       Down: 4.9 dB / Up: 10.2 dB
Aggregate Transmit Power (ACTATP):        Down: -6.2 dB / Up: 12.6 dB
Max. Attainable Data Rate (ATTNDR):       Down: 50.772 Mb/s / Up: 29.590 Mb/s

By the way, I would swear I saw 100/30 the first time I hooked up the 2812 with OpenWRT but I am not sure and have not seen it since. The above is what I seemingly get all the time now.

Is this a configuration issue? Here is my /etc/config/network, I have fiddled with the annex setting, does not seem to do anything (as expected with VDSL).

config dsl 'dsl'
        option annex 'a'
        option tone 'av'
        option firmware '/lib/firmware/vdsl-575617.bin'
        option xfer_mode 'ptm'
        option line_mode 'vdsl'
        option ds_snr_offset '0'

My plan B (unpreferred) is to return to stock (I have a NAND backup), stay on bridge mode, and set up a separate OpenWRT router...

Any thoughts?

Maybe run https://github.com/moeller0/lantiq_dsl_parser under octave and post the plots here? This will not fix the problem, but might indicate what goes pear-shaped...

Thanks for the suggestion. I have just spent some effort on this and couldn't fully get it to work on Windows and must drop this now due to a lack of time. Also I am pretty confident it is not an issue with the line, given the speeds I get on stock firmware on exactly the same device...

Thanks for trying, I hav no windows box available and hence did not try this, I would have thought that usuing WSL/WSL2 with a recent ubuntu LTS install should e sufficient.

Oh, sure. Anyway sorry for making you waste time.

Have you tried to extract the fimware from your nand dumps?

Hi, no I havenโ€™t yet, another 2812 is on its way so I can compare stock and OpenWrt in more detail. I am running the correct version, someone posted it somewhere, it is at least the same version as the stock (Telfort) 2812 and the Experiabox v8.
But maybe the correct firmware is only half the answer; maybe specific commands or configs are sent to the modem.
Have you ever been able to get really high VDSL speeds on OpenWrt?

I got 100 mbps speed with P-2812 F1 openwrt modem. The service provider in Turkey (TTNET) was problematic stock firmware. I am connected with Vdsl 17a and no vector. I'm using Fritzbox labor dsl firmware (5.9.1.4.0.7)

fwiw, I notice your openwrt DSL stats show it is using Annex B, but your config file is (incorrectly?) configured to try and use Annex A with tone A.

@altuntepe would you mind sharing your config and dsl stats output?
@bill888 that is correct, however this seems to be how it is with vdsl, I can only get a connection with annex a firmware and it will say itโ€™s on annex b when connected. But I could be wrong, so anyone who has a working vdsl connection, please share configs.

My plan is 50/5, from which I get 77/23 (and I don't complain). The max attainable data rate is even higher.
Data Rate: 77.848 Mb/s / 23.120 Mb/s
Max. Attainable Data Rate (ATTNDR): 110.820 Mb/s / 31.800 Mb/s
My config:

config dsl 'dsl'
	option tone 'bv'
	option line_mode 'vdsl'
	option xfer_mode 'ptm'
	option firmware '/lib/firmware/575617.bin'
	option annex 'a'
	option ds_snr_offset '0'

That firmware is not the stock from the Telfort 2812, it's extracted from my ISP (DDS) provided modem (Experiabox v8). DDS uses KPN Wholesale, so I would expect it to work as good on a Telfort line, but I'm not sure about that.

My dsl status:

ATU-C Vendor ID:                          Broadcom 192.244
ATU-C System Vendor ID:                   Broadcom
Chipset:                                  Lantiq-VRX200
Firmware Version:                         5.7.5.6.1.7
API Version:                              4.17.18.6
XTSE Capabilities:                        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2
Annex:                                    B
Line Mode:                                G.993.5 (VDSL2 with down- and upstream vectoring)
Profile:                                  17a
Line State:                               UP [0x801: showtime_tc_sync]
Forward Error Correction Seconds (FECS):  Near: 0 / Far: 1
Errored seconds (ES):                     Near: 1 / Far: 3
Severely Errored Seconds (SES):           Near: 0 / Far: 1
Loss of Signal Seconds (LOSS):            Near: 3 / Far: 1
Unavailable Seconds (UAS):                Near: 491 / Far: 491
Header Error Code Errors (HEC):           Near: 0 / Far: 0
Non Pre-emtive CRC errors (CRC_P):        Near: 0 / Far: 0
Pre-emtive CRC errors (CRCP_P):           Near: 0 / Far: 0
Power Management Mode:                    L0 - Synchronized
Latency [Interleave Delay]:               0.14 ms [Fast]   0.0 ms [Fast]
Data Rate:                                Down: 77.848 Mb/s / Up: 23.120 Mb/s
Line Attenuation (LATN):                  Down: 2.2 dB / Up: 1.0 dB
Signal Attenuation (SATN):                Down: 2.2 dB / Up: 0.8 dB
Noise Margin (SNR):                       Down: 4.6 dB / Up: 5.0 dB
Aggregate Transmit Power (ACTATP):        Down: -11.7 dB / Up: 11.8 dB
Max. Attainable Data Rate (ATTNDR):       Down: 110.880 Mb/s / Up: 31.800 Mb/s
Line Uptime Seconds:                      45891
Line Uptime:                              12h 44m 51s

As you can see my LATN, SATN, SNR and further are worse than yours.

root@OpenWrt:~# /etc/init.d/dsl_control status
ATU-C Vendor ID:                          Broadcom 164.27
ATU-C System Vendor ID:                   Broadcom
Chipset:                                  Lantiq-VRX200
Firmware Version:                         5.9.1.4.0.7
API Version:                              4.17.18.6
XTSE Capabilities:                        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2
Annex:                                    B
Line Mode:                                G.993.2 (VDSL2)
Profile:                                  17a
Line State:                               UP [0x801: showtime_tc_sync]
Forward Error Correction Seconds (FECS):  Near: 65 / Far: 10008
Errored seconds (ES):                     Near: 2 / Far: 82
Severely Errored Seconds (SES):           Near: 0 / Far: 0
Loss of Signal Seconds (LOSS):            Near: 0 / Far: 0
Unavailable Seconds (UAS):                Near: 29 / Far: 29
Header Error Code Errors (HEC):           Near: 0 / Far: 0
Non Pre-emtive CRC errors (CRC_P):        Near: 2 / Far: 0
Pre-emtive CRC errors (CRCP_P):           Near: 0 / Far: 0
Power Management Mode:                    L0 - Synchronized
Latency [Interleave Delay]:               0.0 ms [Fast]   0.0 ms [Fast]
Data Rate:                                Down: 79.865 Mb/s / Up: 4.095 Mb/s
Line Attenuation (LATN):                  Down: 8.8 dB / Up: 7.5 dB
Signal Attenuation (SATN):                Down: 8.8 dB / Up: 10.3 dB
Noise Margin (SNR):                       Down: 11.7 dB / Up: 31.1 dB
Aggregate Transmit Power (ACTATP):        Down: -5.5 dB / Up: 14.5 dB
Max. Attainable Data Rate (ATTNDR):       Down: 92.585 Mb/s / Up: 45.951 Mb/s
Line Uptime Seconds:                      207682
Line Uptime:                              2d 9h 41m 22s

config dsl 'dsl'
	option annex 'a'
	option line_mode 'vdsl'
	option ds_snr_offset '0'
        option firmware '/lib/firmware/vdsl.bin'

For LATN, SATN smaller numbers indicate a considerably better/shorter line than the OP. As does the smaller ACTATP (on a shorter lines less amplification is required, as the lower attenuation will "eat" less of the transmitted signal, so for a similar signal level at the receiving end less transmit power is required).

SNR margin is partly configurable by the ISP.

Thanks all! The only config diff I could find was "tone bv" vs. "tone av" but that does not make a difference. I just had an issue where it wasn't syncing at all after having the DSL cable out for a bit. Perhaps there is a hardware issue. I will post more info in a few days, when I have another 2812 to play with.

I just got another 2812 with the latest Telfort branded firmware on it. It immediately syncs on 108/31Mb. I have root shell access and I have already found the following:

  • I was using identical DSL firmware as stock
  • Stock contains a shell script S1_98telfort which sends a complex string to the "g997lis" command. I have not yet found any other specific settings

My next step is to rule out hardware issue with the OpenWRT one. I have tried to restore the NAND backup but so far it boots the kernel, which then panics because of init=0 or something, I will spend some more time on this, maybe copy the NAND from the working stock to the now bricked one.

Definitely, make a note of the exact command, as you should be able to do the same with openwrt, if you get that working well enough.

1 Like

Well, I unfortunately was not successful restoring the original telco firmware to my old 2812. A nand restore in u-boot was OK but the kernel kept panicking. So I will continue assuming it has no hardware issue. On the new 2812 (that runs telco firmware and syncs at full speed) I luckily have a root shell and have found the scripts that initialize the dsl connection by calling "dsl_cpe_pipe.sh". I am going to add some logging to it to understand what is being sent to the modem.

Short update. I have managed to extract a number of low-level commands from the telco firmware and have modified my dsl script accordingly. I now get almost exactly the same numbers as @Mijzelf. That is a definitive improvement but instead of 78M down I should get 108M down. Why is it not syncing at the attainable rate? So there is some fiddling to do there, will continue looking, also to find out what the exact command/config is that is making a difference.

I have run into another problem, and that is that I now cannot get an IP address anymore. I can't remember what my working network setup was. @Mijzelf would you mind sharing the relevant wan/dsl/atm bits from /etc/config/network? Many thanks again :slight_smile:

Sure. This is my config:

config dsl 'dsl'
	option tone 'bv'
	option line_mode 'vdsl'
	option xfer_mode 'ptm'
	option firmware '/lib/firmware/575617.bin'
	option annex 'a'
	option ds_snr_offset '0'

config interface 'wan'
	option proto 'dhcp'
	option iface6rd 'wan6'
	option ifname 'dsl0.34'

config interface 'wan6'
	option proto '6rd'

BTW, wan6 doesn't work for me. Have you seen the wiki?

Thanks. Interestingly I seem to be back at square one. This morning the attainable rate was 50M again even when using the modified dsl control script with Telfort magic commands added. And also magically I did have a working WAN connection without changing anything.
I am going to switch my other 2812 to OpenWrt today and try that one (I could not recover stock firmware even though I figured out how to switch to 2nd image). Maybe my first 2812 is blacklisted by the DSLAM somehow.

Okay here is a mildly positive post for a change.
Giving it one more try, with 15 minutes of no modem attached to the line when switching hardware, the 2812 immediately synced at the correct speeds: data rate 78/23, attainable 108/31. I now have 24+ hours uptime on firmware 5.7.8.12.0.7 (5.7.8.C.0.7).
What is even more interesting, is that at least on my upload, I am actually getting 30 Mbps using iperf3 TCP instead of the 23 reported by the DSL script! So maybe there is a bug in the reporting of the data rate somehow? Downstream is fixed at 61 Mbps because it is capped by my current ISP, early May I switch and will report here again.
Whenever someone hits this post in the future: this is concerning OpenWRT 19.07.2.
For reference, what has changed since my opening post?

  1. I am no longer using any "tone" in the config, this avoids sending a low level config to the firmware altogether. Here is the relevant part of /etc/config/network:
config atm-bridge 'atm'
        option encaps 'llc'
        option payload 'bridged'
        option nameprefix 'dsl'
        option vci '34'
        option vpi '0'

config dsl 'dsl'
        option annex 'a'
        option ds_snr_offset '0'
        option line_mode 'vdsl'
        option xfer_mode 'ptm'
        option firmware '/lib/firmware/vdsl-578C07.bin'

config interface 'wan'
        option ifname 'dsl0.34'
        option proto 'dhcp'
  1. I am using the firmware 5.7.8.C.0.7 which is mentioned on the firmware collection page and easy to find/extract.
  2. I have changed /etc/init.d/dsl_control to create a /tmp/dsl.scr autoboot script as follows (you need to ds_snr_offset line in your config to trigger creation of this autoboot script):
autoboot_script() {
        echo "[WaitForConfiguration]={
locs 0 $1
}

[WaitForLinkActivate]={
dms 5048 0 1 102
dmms f45 0 1 36 36
g997xtusecs 4 0 4 0 C 1 0 7
lfcs 0 1 1 1 1 0
lfcs 1 1 1 1 1 0
g997racs 0 0 3
g997racs 0 1 3
g997racs 1 0 3
g997racs 1 1 3
}

[WaitForRestart]={
}

[Common]={
}" > /tmp/dsl.scr
}

I do not have the time to figure out which config setting ultimately helped created a stable config. I am now letting this sit in early May and will report back on the actual TCP speeds measured instead of reported.
Thanks everyone for their insights and help so far.