AVM FritzBox Lantiq-VRX200 and ADSL2+

My TD-8980 died, so I chose the AVM 7360 V2. But now I can't get DSL sync (ADSL2+ Annex A) . I rule out hardware problems because it works with Freetz NG. I have tried many configurations but nothing works. Same situation with AVM 3370, DSL won't synchronize!
Any tips, does it work for anyone?

I am having similar issue on my AVM 3370 converted from German to International.

stock firmware works and connects fine:

ADSL 2+ (ITU G.992.5) Annex A

this is on:

OpenWrt 22.03.6, r20265-f85a79bcb4

/lib/firmware:

lrwxrwxrwx    1 root     root            43 Jan  1  1970 lantiq-vrx200-a-to-b.bspatch -> xcpe_581816_580B11_to_579906_574402.bspatch
lrwxrwxrwx    1 root     root            22 Jan  1  1970 lantiq-vrx200-a.bin -> xcpe_581816_580B11.bin
-rw-r--r--    1 root     root          1920 Nov 25 18:18 xcpe_581816_580B11.LICENSE
-rw-r--r--    1 root     root        898952 Nov 25 18:18 xcpe_581816_580B11.bin
-rw-r--r--    1 root     root        253635 Nov 25 18:18 xcpe_581816_580B11_to_579906_574402.bspatch

ubus call dsl metrics

{
	"api_version": "4.17.18.6",
	"firmware_version": "5.7.9.9.0.6",
	"chipset": "Lantiq-VRX200",
	"driver_version": "1.5.17.6",
	"state": "Silent",
	"state_num": 3,
	"up": false,
	"uptime": 0,
	"atu_c": {
		
	},
	"power_state": "L3 - No power",
	"power_state_num": 3,
	"upstream": {
		
	},
	"downstream": {
		
	},
	"errors": {
		"near": {
			"es": 0,
			"ses": 0,
			"loss": 0,
			"uas": 1456,
			"lofs": 0,
			"fecs": 0,
			"hec": 0,
			"ibe": 0,
			"crc_p": 0,
			"crcp_p": 0,
			"cv_p": 0,
			"cvp_p": 0
		},
		"far": {
			"es": 0,
			"ses": 0,
			"loss": 0,
			"uas": 1456,
			"lofs": 0,
			"fecs": 0,
			"hec": 0,
			"ibe": 0,
			"crc_p": 0,
			"crcp_p": 0,
			"cv_p": 0,
			"cvp_p": 0
		}
	}
}

Maybe this ? Since after 22.03.0-rc4 OpenWrt introduced support to:

Vectoring on Lantiq VRX200 / VR9 - missing callback for sending error samples - For Developers - OpenWrt Forum

So few ADSL/ADSL2+users here are able to test recent changes.
But I assume old fw like 22.03.0-rc1 would work .
Please also test 22.03.0-rc4 if possible.
If we can point any version from where it stopped to work that would be great improvement to bug hunters.

OpenWrt does not support switching the DSL Annex on VR9/VRX200 modems. So you are stuck on whatever the hardware is configured for. On Fritzboxes that is generally Annex B (I don't know if it is different for the "International" variants, or if these also rely on whatever AVM does in the original firmware for Annex switching).

The command dsl_cpe_pipe.sh vig allows to check the hardware configuration. The numerical value nHybrid shows the result:

  1. Annex A (DSL_HYBRID_TYPE_POTS)
  2. Annex B (DSL_HYBRID_TYPE_ISDN_B)
  3. Annex B/J (DSL_HYBRID_TYPE_ISDN_BJ)
  4. universal (DSL_HYBRID_TYPE_UNIVERSAL_VRX500)

My own Fritzbox 7520/7530 devices return the last value, so one of those might also be an option in addition to an actual Annex A device.

1 Like

I assume this is not true since it's confirmed to be working on freetz fw /hacked OEM fw
There might be devices with some HW filters that's forbid other annex but not the one VDSL2 enabled. VDSL is annex-less and do not leave spare bandwidth for ISDN/pots but that you know.

Slightly differently. VDSL does have Annexes as well (A north america, B europe, C japan, that define different band plans, that in turn define the frequencies for the the different up- and download bands). But Annex B for Europe contains different bandplans some sparing POTS and some ISDN bands. The upshot is however that a device compatible with VDSL2 AnnexB likely can not have fixed frequency filters...

See ITU-T G.993.2 for more details and boring standards prose than you might desire :wink:

1 Like

I am aware that AVM's firmware does allow switching the annexes for ADSL connections (and so it is clear the hardware supports it).

But it does not work in OpenWrt. If you try to use a DSL firmware with non-matching Annex in ADSL mode, the modem won't work. The sub error code reported by dsl_cpe_pipe.sh lecg in this case is 0xf (ALM_ModemFSM_FailReasonGet_S_FW_HYBRID). And dsl_cpe_pipe.sh g997lisg reports a sub status of 5 (LINIT_SUB_FW_HYBRID).

Of course it should be possible to reverse engineer what AVM does in their version of the drivers to make it work, but it looks like so far nobody has done that.

1 Like

I've bought two 3370 Fritz!boxes from ebay. one of them accepts only the International freetz-ng image and the other one only the German one.

both of them connect just fine under Freetz-ng OS on adsl Annex A

both of them can not connect to Annex A under openwrt 24.10

FWIW, my BT Home Hub 5A with openwrt 24.10 & my Netgear DM200 with 23.05 connect fine on Annex A

Edit: some technical info about the boxes I am "playing"

Fritz!box (non-International), openwrt 24.10 (initramfs):

AVM FRITZ!Box 3370 Rev. 2 (Micron NAND)
xRX200 rev 1.1
MIPS 34Kc V5.5
BogoMIPS 331.77

nReturn=0 DSL_DriverVersionApi=4.17.18.6 DSL_ChipSetFWVersion=5.7.9.9.0.6 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.5.17.6 nHybrid=3

Fritz!box (International), openwrt 24.10 installed in flash:

AVM FRITZ!Box 3370 Rev. 2 (Micron NAND)
xRX200 rev 1.1
MIPS 34Kc V5.5
BogoMIPS 331.77

nReturn=0 DSL_DriverVersionApi=4.17.18.6 DSL_ChipSetFWVersion=5.9.0.13.0.1 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.5.17.6 nHybrid=3

BT Home Hub 5A, openwrt 24.10 installed in flash:

BT Home Hub 5A
xRX200 rev 1.2
MIPS 34Kc V5.6
BogoMIPS 331.77

nReturn=0 DSL_DriverVersionApi=4.17.18.6 DSL_ChipSetFWVersion=5.9.0.13.0.1 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.5.17.6 nHybrid=1

Netgear DM200, openwrt 24.10 installed in flash:

Netgear DM200
xRX200 rev 1.2
MIPS 34Kc V5.6
BogoMIPS 334.23

nReturn=0 DSL_DriverVersionApi=4.17.18.6 DSL_ChipSetFWVersion=5.9.0.13.0.1 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.5.17.6 nHybrid=1

Edit II: I have opened a git ticket about this issue, behavior

1 Like

openwrt 24.10.0 is not able to connect to an Annex-A (ADSL not VDSL) on my international 3370 Fritz!Box

before testing 22.03.0-rc1 & 22.03.0-rc4 would 19.07.10 be a safer choice just to make sure that the international 3370 Fritz!Box can successfully connect to an Annex-A ?

I am using firmware vr9-A-dsl_7490_7.60-5.9.0.D.0.1.bin that works fine on my BT Home Hub 5A on that very same Annex-A

Edit: Nevermind, janh has explained it.

As mentioned above, if dsl_cpe_pipe.sh vig shows nHybrid=3, it is not possible to use Annex A on OpenWrt. You need a device with nHybrid=1 like your HH5A, or a VRX500 device with nHybrid=4.

Trying different OpenWrt versions won't help, as this has never been supported. The only way to change the current behaviour would be to reverse engineer how Annex switching works in AVM's firmware, and then implementing that in OpenWrt.

My Plusnet Hub One (hh5a) shows the type 1

~# dsl_cpe_pipe.sh vig
nReturn=0 DSL_DriverVersionApi=4.17.18.6 DSL_ChipSetFWVersion=5.9.1.4.0.7 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.5.17.6 nHybrid=1

thank you for the feedback

As mentioned above, if dsl_cpe_pipe.sh vig shows nHybrid=3

are you sure this is the case with the Fritz!Box wlan 3370 ?

if this is indeed the case, then neither of them should be able to connect to an adsl Annex-A (please read the following findings)

I own two of those units. one can accept only the German freetz-ng while the other one only the International one

trying to flash the "wrong" freetz-ng to a unit results on a boot loop. I don't have access currently to the serial port for further details.

Edit: I got access to serial console & I've uploaded the logs over at the relative github ticket

the freetz-ng self-compiled images I am using are the following:

-rw-r--r--  1 alex alex 23336960 Mar 18 16:40 3370_06.54.int_freetz-ng-25676M-842abee830_20250318-164021.image
-rw-r--r--  1 alex alex 21821440 Mar 18 16:35 3370_06.56.ger_freetz-ng-25676M-842abee830_20250318-163501.image

currently I have next to me the one with the International freetz-ng and no access to physical adsl Annex-A line to test

the equivelant command to dsl_cpe_pipe.sh under the freetz-ng is /usr/sbin/dsl_pipe which returns the following:

   avmcr,   avmcrmr,   avmcrms,   avmcw,   avmdsmmcs,   avmhwrfit,   avmpet,   avmvig,   acog,   acos,   acs,   alf,   asecg,   asecs,   asg,   aufg,   alig,   bbsg,   bpstg,   bpsg,   ccadbgmlg,   ccadbgmls,   dbgmlg,   dbgmls,   dsmcg,   dsmcs,   dsmmcg,   dsmmcs,   dsmstatg,   dsmsg,   dsnrg,   dmms,   dms,   esmcg,   esmcs,   fddg,   fdsg,   fpsg,   g997amdpfcg,   g997amdpfcs,   g997amlfcg,   g997amlfcs,   g997bang,   g997bansg,   g997cdrtcg,   g997cdrtcs,   g997csg,   g997dpfsg,   g997dfr,   g997dhling,   g997dhlinsg,   g997dhlogg,   g997dqlng,   g997dsnrg,   g997fpsg,   g997gang,   g997gansg,   g997lstg,   g997lacg,   g997lacs,   g997lfsg,   g997lisg,   g997lig,   g997listrg,   g997lis,   g997lsg,   g997lspbg,   g997ltsg,   g997lpmcg,   g997lpmcs,   g997pmsft,   g997pmsg,   g997racg,   g997racs,   g997sang,   g997sansg,   g997upbosg,   g997xtusecg,   g997xtusecs,   g997xtusesg,   help,   hsdg,   ics,   isg,   lecg,   lfcg,   lfcs,   lfsg,   locg,   locs,   lsg,   llsg,   llcg,   llcs,   mlsg,   nsecg,   nsecs,   osg,   pm15meet,   pmbms,   pmcc15mg,   pmcc1dg,   pmccsg,   pmcctg,   pmchs15mg,   pmchs1dg,   pmct15mg,   pmct15ms,   pmct1dg,   pmct1ds,   pmcg,   pmcs,   pmdpc15mg,   pmdpc1dg,   pmdpcsg,   pmdpctg,   pmdpfc15mg,   pmdpfc1dg,   pmdpfcsg,   pmdpfctg,   pmdpfhs15mg,   pmdpfhs1dg,   pmdphs15mg,   pmdphs1dg,   pmdpt15mg,   pmdpt15ms,   pmdpt1dg,   pmdpt1ds,   pmetr,   pmlesc15mg,   pmlesc1dg,   pmlescsg,   pmlesctg,   pmleshs15mg,   pmleshs1dg,   pmlic15mg,   pmlic1dg,   pmlicsg,   pmlictg,   pmlihs15mg,   pmlihs1dg,   pmlit15mg,   pmlit15ms,   pmlit1dg,   pmlit1ds,   pmlsc15mg,   pmlsc1dg,   pmlscsg,   pmlsctg,   pmlshs15mg,   pmlshs1dg,   pmlst15mg,   pmlst15ms,   pmlst1dg,   pmlst1ds,   pmrtc15mg,   pmrtc1dg,   pmrtcsg,   pmrtctg,   pmrths15mg,   pmrths1dg,   pmrtt15mg,   pmrtt15ms,   pmrtt1dg,   pmrtt1ds,   pmr,   pmsmg,   pmsms,   ptsg,   quit,   rtsg,   rccg,   rccs,   rusg,   se,   sicg,   sics,   sisg,   tcpmistart,   tcpmistop,   tmcs,   tmsg,   vig,

on my freetz-ng International OS, not connected to an adsl as I don't currently have access to one, issuing the command:

/usr/sbin/dsl_pipe vig

returns a blank result

this very same box, connects just fine on my two different Annex-A adsl lines back home

FWIW, using eva_ramboot.py 192.168.178.1 ./openwrt-19.07.10-lantiq-xrx200-avm_fritz3370-rev2-micron-initramfs-kernel.bin to initramfs this very same box and issuing:

dsl_cpe_pipe.sh vig

returns:

nReturn=0 DSL_DriverVersionApi=4.17.18.6 DSL_ChipSetFWVersion=5.7.9.9.0.6 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.5.17.6 nHybrid=3

Output is disabled by default in the original Fritzbox firmware. You can try to enable it using the command dsl_pipe ccadbgmls 13 ff. If it doesn't work, replace 13 by different numbers until you find the right one.

This means that the device is initially configured for Annex B/J.

Maybe the original firmware uses one of the custom dsl_pipe commands starting with avm to switch it to Annex A.

1 Like

issuing the following on the International box:
dsl_pipe ccadbgmls 13 ff . . (thank you janh)
and
dsl_pipe vig

the result is:
nReturn=0 DSL_DriverVersionApi=4.16.6-pd1pa1 DSL_ChipSetFWVersion=5.7.8.9.1.7 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.4.4 nHybrid=3

this is before the very first run of the wizard setup that the user can select and choose either Annex A or B

by selecting Annex A and running again:
dsl_pipe vig

the result is:
nReturn=0 DSL_DriverVersionApi=4.16.6-pd1pa1 DSL_ChipSetFWVersion=5.7.1.14.1.1 DSL_ChipSetHWVersion=Unknown DSL_ChipSetType=Lantiq-VRX200 DSL_DriverVersionMeiBsp=1.4.4 nHybrid=3

I have opened a discussion over at Freetz-ng asking about a way to detect an International box or a German one from CLI.