Adding support for VRX518 (and maybe VRX320)

Ah ok thanks very much, turns out it was a me problem!

1 Like

@dhewg Thanks for your great work! What do you think when will your changes be merged into upstream openwrt?

I guess when legal issues are sorted out:

Exactly. If we can get a compatible license for the firmware files (as with VR9, but that was before maxlinear), we can just open a PR as-is. Once merged, users can then download and install a binary OpenWrt release as usual - and start using the dsl line on these routers.

The only alternative would be not bundling the firmware files, and adding a script that downloads those at runtime instead. But that excludes using the same router/dsl-line to download them since it's not operational without the firmware... That's not just annoying for everyone, it needs to be implemented as well. It's not hard, but imho a waste of time, since compiling a branch is easy and way less annoying.

3 Likes

Hi, can someone guide me how to build it, or be so kind and upload the image somewhere?
I am a bit lost wit the build process. :wink:

It's very easy, these are the steps I did:

  • Clone the source code using code from dhewg git clone https://github.com/dhewg/openwrt && cd openwrt
  • Check out the vr11 branch (git checkout vr11)
  • ./scripts/feeds update -a to check out the available package feeds
  • ./scripts/feeds install -a to make the packages available
  • make menuconfig to configure your build, i.e. selecting the target box
  • make defconfig to select the standard packages (often not needed)
  • make

And that's it.

More details (and more or less the same steps): https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem

1 Like

Thanks, it is running now.

@menuconfig: Should I select here something except the target and device?
What is in the usual prebuilt images?

That depends on your needs :wink: I usually select all packages here that I need - LUCi is an example of a package not normally included.

I know, but no idea anymore what makes sense. I have done all this years ago and my TD-W8970 also works fine with vdsl and several packages. But there as I remember installed most of them later.
What is recommended to include directly in the build? I would like to have Luci and https (which combo to use).

Thanks so far, the build worked (only Luci added) and is already flashed. And I am already online. :wink:

**Line State:**Showtime with TC-Layer sync
**Line Mode:**G.993.2 (VDSL2, Profile 17a, with down- and upstream vectoring)
**Line Uptime:**0h 2m 1s
**Annex:**B
**Data Rate:**20.895 Mb/s / 5.231 Mb/s
**Max. Attainable Data Rate (ATTNDR):**126.188 Mb/s / 41.126 Mb/s
**Latency:**0.74 ms / 0.00 ms
**Line Attenuation (LATN):**13.7 dB / 13.1 dB
**Signal Attenuation (SATN):**13.7 dB / 13.5 dB
**Noise Margin (SNR):**40.0 dB / 33.0 dB
**Aggregate Transmit Power (ACTATP):**14.5 dB / -0.1 dB
**Forward Error Correction Seconds (FECS):**0 / 2
**Errored seconds (ES):**0 / 7
**Severely Errored Seconds (SES):**0 / 0
**Loss of Signal Seconds (LOSS):**0 / 0
**Unavailable Seconds (UAS):**655 / 655
**Header Error Code Errors (HEC):**0 / 0
**Non Pre-emptive CRC errors (CRC_P):**0 / 0
**Pre-emptive CRC errors (CRCP_P):**0 / 0
**ATU-C System Vendor ID:**Broadcom 178.33
**Power Management Mode:**L0 - Synchronized

Why do I see here G.993.2 while my TD-W8970 TD-W8970 shows G.993.5.

Here also from the TD-W8970:
**Line State:**UP [0x0]
**Line Mode:**G.993.5 (VDSL2 with down- and upstream vectoring)
**Line Uptime:**5m 43s
**Annex:**B
**Profile:**17a
**Data Rate:**20.479 Mb/s / 5.120 Mb/s
**Max. Attainable Data Rate (ATTNDR):**111.706 Mb/s / 38.315 Mb/s
**Latency:**0.20 ms / 0.0 ms
**Line Attenuation (LATN):**13.2 dB / 13.7 dB
**Signal Attenuation (SATN):**13.3 dB / 14.2 dB
**Noise Margin (SNR):**37.8 dB / 30.7 dB
**Aggregate Transmit Power(ACTATP):**0.9 dB / 13.8 dB
**Forward Error Correction Seconds (FECS):**0 / 0
**Errored seconds (ES):**0 / 7
**Severely Errored Seconds (SES):**0 / 0
**Loss of Signal Seconds (LOSS):**3 / 0
**Unavailable Seconds (UAS):**1133 / 1133
**Header Error Code Errors (HEC):**0 / 0
**Non Pre-emtive CRC errors (CRC_P):**0 / 0
**Pre-emtive CRC errors (CRCP_P):**0 / 0
**ATU-C System Vendor ID:**Broadcom 178.33
**Power Management Mode:**L0 - Synchronized

Maybe any suggestions for optimization? My provider is Fonira Austria and I am mainly using the settings from the docs: https://openwrt.org/docs/guide-user/network/wan/isp-configurations

br, cd

Hm, my impression was that G.993.5 is vectoring while G.993.2 is "just" VDSL2, but it reads vectoring for both your statistics. You can try a different firmware file, I use a newer version for increased stability.

I'm also on a Fonira-line :slight_smile: However, my line does not support vectoring (it reads G.993.2 (VDSL2, Profile 17a) in this case).

The way this value is reported changed when ubus support for DSL metrics was added (replacing the code in the init script / lantiq_dsl.sh). So, if you are still running an OpenWrt version older than 21.02 on your TD-W8970, this is normal.

2 Likes

@janh: Thanks. Then it's clear.

@andyboeh: Small world. :wink: I thought I have already the latest FW extracted from the FB image. Where can I find a newer one?
Any additional settings you suggest for fonira?

Br
Cd

Ah OK, I didn't check whether you replaced it - the VR11 branch installs a default firmware.

I'm on Fonira with dynamic settings, so I really only configured a DHCP client on dsl0.31 and that's it.

1 Like

Should we report G.993.5 if vectoring is enabled instead?
It's just that the G99x.y mode is derived from the XTSE table, the vectoring status is reported by mei.

The part
./scripts/feeds install -a
gives me hundreds of errors that look like this:

Installing package 'bash' from packages
WARNING: No feed for package 'libc' found
WARNING: No feed for package 'librt' found
WARNING: No feed for package 'libpthread' found
WARNING: No feed for package 'libncurses' found
WARNING: No feed for package 'libreadline' found

Is that to be expected?

Edit: The rest of it failed dismally so I guess not. I'm using Linux Mint for this, am I better off with Windows?

What did ./scripts/feeds update -a return?

You cannot build on Windows. I'm on Arch Linux, but any recent Linux distribtution should do - check the Wiki for details.

myname@Shuttle-SG31:~/openwrt$ ./scripts/feeds update -a
Updating feed 'packages' from 'https://git.openwrt.org/feed/packages.git' ...
Cloning into './feeds/packages'...
remote: Enumerating objects: 170989, done.
remote: Counting objects: 100% (170989/170989), done.
remote: Compressing objects: 100% (70724/70724), done.
remote: Total 170989 (delta 99130), reused 162168 (delta 91563), pack-reused 0
Receiving objects: 100% (170989/170989), 47.28 MiB | 5.79 MiB/s, done.
Resolving deltas: 100% (99130/99130), done.
Updating feed 'luci' from 'https://git.openwrt.org/project/luci.git' ...
Cloning into './feeds/luci'...
remote: Enumerating objects: 42779, done.
remote: Counting objects: 100% (42779/42779), done.
remote: Compressing objects: 100% (8057/8057), done.
remote: Total 349773 (delta 36870), reused 36568 (delta 31565), pack-reused 306994
Receiving objects: 100% (349773/349773), 142.83 MiB | 5.78 MiB/s, done.
Resolving deltas: 100% (201661/201661), done.
Updating feed 'routing' from 'https://git.openwrt.org/feed/routing.git' ...
Cloning into './feeds/routing'...
remote: Enumerating objects: 10438, done.
remote: Counting objects: 100% (10438/10438), done.
remote: Compressing objects: 100% (6010/6010), done.
remote: Total 10438 (delta 4711), reused 9112 (delta 3833), pack-reused 0
Receiving objects: 100% (10438/10438), 2.45 MiB | 5.55 MiB/s, done.
Resolving deltas: 100% (4711/4711), done.
Updating feed 'telephony' from 'https://git.openwrt.org/feed/telephony.git' ...
Cloning into './feeds/telephony'...
remote: Enumerating objects: 11028, done.
remote: Counting objects: 100% (11028/11028), done.
remote: Compressing objects: 100% (6491/6491), done.
remote: Total 11028 (delta 6186), reused 7873 (delta 4313), pack-reused 0
Receiving objects: 100% (11028/11028), 2.19 MiB | 5.14 MiB/s, done.
Resolving deltas: 100% (6186/6186), done.
Create index file './feeds/packages.index' 
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... failed.
Checking 'g++'... failed.
Checking 'working-g++'... failed.
Checking 'ncurses'... failed.
Checking 'git'... ok.
Checking 'rsync'... ok.
Checking 'perl-data-dumper'... ok.
Checking 'perl-findbin'... ok.
Checking 'perl-file-copy'... ok.
Checking 'perl-file-compare'... ok.
Checking 'perl-thread-queue'... ok.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'xargs'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'egrep'... ok.
Checking 'getopt'... ok.
Checking 'realpath'... ok.
Checking 'stat'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'install'... ok.
Checking 'perl'... ok.
Checking 'python2-cleanup'... ok.
Checking 'python'... ok.
Checking 'python3'... ok.
Checking 'python3-distutils'... failed.
Checking 'python3-stdlib'... ok.
Checking 'file'... ok.
Checking 'which'... ok.
Prerequisite check failed. Use FORCE=1 to override.
make: *** [/home/myname/openwrt/include/toplevel.mk:181: staging_dir/host/.prereq-build] Error 1
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting package info: done
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting target info: done
Create index file './feeds/luci.index' 
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... failed.
Checking 'g++'... failed.
Checking 'working-g++'... failed.
Checking 'ncurses'... failed.
Checking 'git'... ok.
Checking 'rsync'... ok.
Checking 'perl-data-dumper'... ok.
Checking 'perl-findbin'... ok.
Checking 'perl-file-copy'... ok.
Checking 'perl-file-compare'... ok.
Checking 'perl-thread-queue'... ok.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'xargs'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'egrep'... ok.
Checking 'getopt'... ok.
Checking 'realpath'... ok.
Checking 'stat'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'install'... ok.
Checking 'perl'... ok.
Checking 'python2-cleanup'... ok.
Checking 'python'... ok.
Checking 'python3'... ok.
Checking 'python3-distutils'... failed.
Checking 'python3-stdlib'... ok.
Checking 'file'... ok.
Checking 'which'... ok.
Prerequisite check failed. Use FORCE=1 to override.
make: *** [/home/myname/openwrt/include/toplevel.mk:181: staging_dir/host/.prereq-build] Error 1
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting package info: done
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting target info: done
Create index file './feeds/routing.index' 
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... failed.
Checking 'g++'... failed.
Checking 'working-g++'... failed.
Checking 'ncurses'... failed.
Checking 'git'... ok.
Checking 'rsync'... ok.
Checking 'perl-data-dumper'... ok.
Checking 'perl-findbin'... ok.
Checking 'perl-file-copy'... ok.
Checking 'perl-file-compare'... ok.
Checking 'perl-thread-queue'... ok.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'xargs'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'egrep'... ok.
Checking 'getopt'... ok.
Checking 'realpath'... ok.
Checking 'stat'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'install'... ok.
Checking 'perl'... ok.
Checking 'python2-cleanup'... ok.
Checking 'python'... ok.
Checking 'python3'... ok.
Checking 'python3-distutils'... failed.
Checking 'python3-stdlib'... ok.
Checking 'file'... ok.
Checking 'which'... ok.
Prerequisite check failed. Use FORCE=1 to override.
make: *** [/home/myname/openwrt/include/toplevel.mk:181: staging_dir/host/.prereq-build] Error 1
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting package info: done
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting target info: done
Create index file './feeds/telephony.index' 
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... failed.
Checking 'g++'... failed.
Checking 'working-g++'... failed.
Checking 'ncurses'... failed.
Checking 'git'... ok.
Checking 'rsync'... ok.
Checking 'perl-data-dumper'... ok.
Checking 'perl-findbin'... ok.
Checking 'perl-file-copy'... ok.
Checking 'perl-file-compare'... ok.
Checking 'perl-thread-queue'... ok.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'xargs'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'egrep'... ok.
Checking 'getopt'... ok.
Checking 'realpath'... ok.
Checking 'stat'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'install'... ok.
Checking 'perl'... ok.
Checking 'python2-cleanup'... ok.
Checking 'python'... ok.
Checking 'python3'... ok.
Checking 'python3-distutils'... failed.
Checking 'python3-stdlib'... ok.
Checking 'file'... ok.
Checking 'which'... ok.
Prerequisite check failed. Use FORCE=1 to override.
make: *** [/home/myname/openwrt/include/toplevel.mk:181: staging_dir/host/.prereq-build] Error 1
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting package info: done
bash: line 2: /home/myname/openwrt/staging_dir/host/bin/mkhash: No such file or directory
Collecting target info: done

Obviously, there are errors that need to be resolved - your compiler does not work, so you are missing some important tools. Please check the Wiki page I linked to for the required packages.

1 Like

Thanks - never done anything like this before, think I'm good to go now. Sorry for the noobiness!

myname@Shuttle-SG31:~/openwrt$ ./scripts/feeds install -a
Collecting package info: done
Collecting target info: done
Installing all packages from feed packages.
Installing all packages from feed luci.
Installing all packages from feed routing.
Installing all packages from feed telephony.

I built this, adding only LuCI and SQM, and all seems to be working well.

I get the same sync rates as on the stock AVM software.

I also have an old build that someone put up a year ago, that reported a firmware version of 8.12.1.7.1.7.
This build reports a firmware version of 8.13.1.5.0.7 so it is a newer firmware but not one from AVM is that right?
I put the latest AVM one in anyway and it now reports 8.13.1.10.1.7.

I wonder can the output from
/etc/init.d/dsl_control dslstat
be used to auto configure SQM somehow, by extracting the sync rates

Anyway thanks for all the hard work put in guys.