Support for WAVE 300 Wi-Fi chip

Check the build_openwrt.sh script, run and it will do everything, unless some bug appears. After that, build_wave300, then build_hostapd. I got the same OS.

Yeah, you're right, something went wrong, I started over (actually on another Bionic machine for no specific reason) and I come into ncurses menues without any "disturbance" now.
But now I see that ATH79 is configured as target architecture, I would have expected this to be Lantiq ?

Still getting the lib dep warnings (see below):

/Tomas

WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
WARNING: Makefile 'package/boot/kexec-tools/Makefile' has a dependency on 'liblzma', which does not exist
WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a build dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
WARNING: Makefile 'package/boot/kexec-tools/Makefile' has a dependency on 'liblzma', which does not exist
WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a build dependency on 'libpam', which does not exist

build_openwrt went through (with above warnings), but build_wave300 not.

checking for target kernel package... /home/eddtomu/openwrt/build_dir/target-mips_24kc_musl/linux-lantiq_xrx200/linux-4.14.221
checking for target kernel compiler... configure: error: Target kernel compiler not found
Makefile:102: recipe for target '.config.h' failed
make: *** [.config.h] Error 1
ERROR: no .config file found!
Run make xconfig or make menuconfig first to generate .config file!

speaker-test 1.1.3

Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Sine wave rate is 250,0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 192 to 2097152
Period size range from 64 to 699051
Using max buffer size 2097152
Periods = 4
was set period_size = 524288
was set buffer_size = 2097152
 0 - Front Left
Time per period = 10,939857
 ***** after placing firmware files at /lib/firmware
 ***** copy and insmod in your router the following files:
ls: cannot access '/home/eddtomu/wave300/builds/ugw5.4-vrx288/binaries/wls/driver/*.ko': No such file or directory

i got rid of the missing .config by calling the script from wave300 directory, but the other error hints me, I'm lacking the crosscompiler, right ?

Yes, it's not ATH, the code: (build_openwrt)

if [[ $branch > "v19.07.0" ]] || [[ $branch == "v19.07.0" ]]
    then
        wget https://downloads.openwrt.org/releases/${branch:1}/targets/lantiq/xrx200/config.buildinfo -O .config
    else
        if [[ $branch < "v18.06.4" ]] || [[ $branch == "v18.06.4" ]] 
        then
            wget https://downloads.openwrt.org/releases/${branch:1}/targets/lantiq/xrx200/config.seed -O .config
        else
            wget https://downloads.openwrt.org/releases/18.06.4/targets/lantiq/xrx200/config.seed -O .config
        fi
    fi

Should download the official configuration for the wave300 routers, it compiles all of them. You can set for only your router, but I believe that doing it, changes the opkg magic check.
If the official config are set, the openwrt make menuconfig, will display the lantiq architecture.
I got some warning too, I think they are the same.
Good luck

Apparently my problems already start during building of openwrt, mkhash can't be built, need to investigate why.

[EDIT: fixed that by building mkhash manually, I have absolutely no clue, why I wouldn't build automatically! Now it doesn't find the toolchain for 24kc, I let run make from openwrt folder now once, maybe it resolves that.]

Maybe these lines:

 sed -i "s/cross\/openwrt5/$(whoami)\/openwrt/" support/ugw.env.common

 ln -s ~/wave300_rflib/wireless/driver/rflib/ wireless/driver/rflib

From build_openwrt were missing, this happens if you cloned my repo manually, I need to change this

in the meantime I can openwrt/build and wave300/scripts/build_openwrt in almost arbitrary order, while copying mkhash where it belonged, and finally, almost at random build_openwrt ran through now. :wink:

let me try build_wave300 now

Can you paste the error messages about the mkhash?

On the openwrt menuconfig, is the lantiq architecture showing by default? (meaning that the official config file was downloaded)

I updated the build_openwrt and build_wave300 scripts.

I did not tried the openwrt v21.02.0-rc1 yet, I am using v19.07.7

Good luck

targs,

i assume you have to make a multi-part image to flash?

is your bootloader like the one shown here?:

if so, can you share any insight as to how you made the flash file?

there seems to be a lot of things you have to make :confused: i assume all grx350 users have to use the same kind of stuff.

Not sure if I understand correctly,
In my case, the first flash was with putty serial and tftp.
Recovery via http is not available, some routers of TP-Link claim to have this.
Looks like it is an old version with not much options compiled of u-boot. It would be nice to update the u-boot, but I am afraid of bricking the device.

1 Like

yes, he says this device does not have recovery mode either, surprisingly!

he held the resetbutton down and it does not enter the u-boot recovery mode (that we're used to).

looks like a very similar u-boot.

i am hoping to create a firmware that does not need a serial+tftp for first flash.

i understand how that can be done ("direct method"), but i would rather copy the firmware layout and flash it that way because my friend says this was the hardest device he has ever had to open. he says the case is so tight that asking end-users to open it is asking for the bezel to break.

i am very curious as to why this u-boot is so old and appears to be very messy. updating it must not be very easy, i guess... but it's extremely poor.

this is another reason i want to create a firmware my friend can flash from stock, because people need to care about the platform if we want a better u-boot.

thank you so much for the link, though. it gives me comfort that others have seen my friend's nightmare.

I am not sure, but I think I saw something about that the image should be signed by TP-Link in order to the stock firmware accept it.

And something else about v3 header, maybe this has nothing to do with that.

Edit:

Are we getting off topic?
Maybe a moderator can move this and the last messages

see below about mkhash. As I wrote, I can build it manually and place it to the correct location, but eventually it will be removed again.

openwrt directory found, skiping downloads (apt install, git colone, 1000-xrx200-pcie-msi-fix.patch)

        Disclaimer: this is provided without warranties, 
        double check everything, use at your own risk !
        
        -> After you choose the branch:
         feeds and patches will be installed and
         menuconfig will open with target=lantiq and subtarget=XRX200.
        -> Optionally select your router(target profile) and other packages you like,
         this may(needs to investigate) change opkg magic hash, wich prevents
         installation of some package from official repositories.
        -> Save and exit.
        
        Then (make download and compile) will be executed, this takes a while,
        a sound test may play when it finishes.

* (HEAD detached at v17.01.0-rc1)
  master
1) reboot	  10) v17.01.6	    19) v18.06.5      28) v19.07.2
2) v17.01.0	  11) v17.01.7	    20) v18.06.6      29) v19.07.3
3) v17.01.0-rc1	  12) v18.06.0	    21) v18.06.7      30) v19.07.4
4) v17.01.0-rc2	  13) v18.06.0-rc1  22) v18.06.8      31) v19.07.5
5) v17.01.1	  14) v18.06.0-rc2  23) v18.06.9      32) v19.07.6
6) v17.01.2	  15) v18.06.1	    24) v19.07.0      33) v19.07.7
7) v17.01.3	  16) v18.06.2	    25) v19.07.0-rc1  34) v21.02.0-rc1
8) v17.01.4	  17) v18.06.3	    26) v19.07.0-rc2
9) v17.01.5	  18) v18.06.4	    27) v19.07.1
#? 33
cleaning ...
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... ok.
Checking 'g++'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'perl-thread-queue'... ok.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'getopt'... ok.
Checking 'stat'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'perl'... ok.
Checking 'python'... ok.
Checking 'git'... ok.
Checking 'file'... ok.
/home/eddtomu/openwrt/include/prereq-build.mk:155: recipe for target '/home/eddtomu/openwrt/staging_dir/host/bin/mkhash' failed
Prerequisite check failed. Use FORCE=1 to override.
...

another problem is that I don't have the toolchain automatically, I run make on openwrt, I'll receive 7.5 toolchain instead of openwrt/staging_dir/toolchain-mips_24kc_gcc-7.3.0_musl, but even if I soflink one to another it get's removed, I think by build_openwrt.sh script - maybe implicity.

I made some changes to the scripts, to make them compatible to my directory structure as I had it, and I think it may be helpful to some folks.

Maybe you can incorporate the changes as you see fit. Openwrt script was not required by me so I left it as is for now.

WAVE300 Script
Hostapd Script

Some info is missing

9) v17.01.5       18) v18.06.4      27) v19.07.1
#? 33        
cleaning ...

WARNING: Makefile 'package/feeds/packages/ksmbd/Makefile' has a dependency on 'kmod-crypto-arc4', which does not exist
 make[1] dirclean
HEAD is now at d5ae565873 OpenWrt v19.07.7: adjust config defaults
HEAD is now at d5ae565873 OpenWrt v19.07.7: adjust config defaults
* (HEAD detached at v19.07.7)
  master
Updating feed 'packages' from 'https://git.openwrt.org/feed/packages.git^90af10d01579425369bd474051b6d3ddaf32a7e3' ...
Create index file './feeds/packages.index' 

Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.

Do the following commands execute:

    git reset --hard #
        
    echo "    configuring branch $branch ...."
    git checkout $branch
    git branch

    echo "    updating feeds ...."
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    ./scripts/feeds install libnl

I am unable to open, can you post in your repo?

How is your progress with the driver?

I have updated the links to show the pastes in raw format so they should just open fine. I dont have time for GitHub upload at the moment, will do so once I can.

I dont have the WAVE300 device with me at the moment but will have the device with me in a day so then I can test the driver on it. So far the driver builds just fine for v19.07.7 along with the hostapd. If everything works well then it should be a good news.

[Update]
I have stumbled upon the following error and I have no idea which packages to install now. Although I have loaded the wave300 driver to the router and WiFi is enabled without crashing the device. To configure hostapd and WiFi configuration I need help with following.

Error loading shared library libssl.so.1.1: No such file or directory (needed by ./mtlk-ap)
Error loading shared library libcrypto.so.1.1: No such file or directory (needed by ./mtlk-ap)

Where exactly is the error happening?

The error was happening when I did ./mtlk-ap config.conf so I dug around opkg and found libopenssl and installed it. The error went away but then there were errors in config.conf because in the device I already have a wlan0 WiFi and the WAVE300 was lighting up as wlan1.

Well now the driver is working... (without encryption because I only set it up with mtlk-ap once and it would not exit the script so I Ctrl-C 'd it and after that I just bridged wlan1 to LAN and it started without encryption, no questions asked) and with internet/IP access.

Here is an initial attempt at iperf3, with above in mind:

ahmar@ahmar-HP-15:~$ iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.135 port 51910 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   908 KBytes  7.44 Mbits/sec   26   90.5 KBytes       
[  5]   1.00-2.00   sec  1.18 MBytes  9.91 Mbits/sec    0    107 KBytes       
[  5]   2.00-3.00   sec   891 KBytes  7.30 Mbits/sec    0    115 KBytes       
[  5]   3.00-4.00   sec  1.12 MBytes  9.38 Mbits/sec    0    116 KBytes       
[  5]   4.00-5.00   sec  1.18 MBytes  9.90 Mbits/sec    0    116 KBytes       
[  5]   5.00-6.00   sec  1.12 MBytes  9.38 Mbits/sec    0    117 KBytes       
[  5]   6.00-7.00   sec  1018 KBytes  8.34 Mbits/sec    0    124 KBytes       
[  5]   7.00-8.00   sec  1.43 MBytes  12.0 Mbits/sec    0    137 KBytes       
[  5]   8.00-9.00   sec  1.43 MBytes  12.0 Mbits/sec    0    163 KBytes       
[  5]   9.00-10.00  sec  1.68 MBytes  14.1 Mbits/sec    0    201 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  11.9 MBytes  9.97 Mbits/sec   26             sender
[  5]   0.00-10.12  sec  11.1 MBytes  9.18 Mbits/sec                  receiver

iperf Done.
ahmar@ahmar-HP-15:~$ iperf3 -c 192.168.1.1 -R
Connecting to host 192.168.1.1, port 5201
Reverse mode, remote host 192.168.1.1 is sending
[  5] local 192.168.1.135 port 51914 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  28.3 KBytes   232 Kbits/sec                  
[  5]   1.00-2.00   sec  28.3 KBytes   232 Kbits/sec                  
[  5]   2.00-3.00   sec  25.5 KBytes   209 Kbits/sec                  
[  5]   3.00-4.00   sec  28.3 KBytes   232 Kbits/sec                  
[  5]   4.00-5.00   sec  28.3 KBytes   232 Kbits/sec                  
[  5]   5.00-6.00   sec  25.5 KBytes   208 Kbits/sec                  
[  5]   6.00-7.00   sec  28.3 KBytes   232 Kbits/sec                  
[  5]   7.00-8.00   sec  28.3 KBytes   232 Kbits/sec                  
[  5]   8.00-9.00   sec  25.5 KBytes   209 Kbits/sec                  
[  5]   9.00-10.00  sec  28.3 KBytes   232 Kbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.08  sec   300 KBytes   244 Kbits/sec    0             sender
[  5]   0.00-10.00  sec   274 KBytes   225 Kbits/sec                  receiver

iperf Done.

I think mtlk driver used to show up here as well but now it's not:

root@OpenWrt:/mtlk# cat /proc/interrupts
           CPU0       CPU1       
  7:    1066571    1068052      MIPS   7  timer
  8:       7863      26912      MIPS   0  IPI call
  9:      53201     115165      MIPS   1  IPI resched
 22:     154750          0       icu  22  spi_rx
 23:      15729          0       icu  23  spi_tx
 24:          0          0       icu  24  spi_err
 62:          0          0       icu  62  1e101000.usb, dwc2_hsotg:usb1
 63:      44496          0       icu  63  mei_cpe
 72:          0          0       icu  72  vrx200_rx
 73:          0          0       icu  73  vrx200_tx
 75:          0          0       icu  75  vrx200_tx_2
 91:      14280          0       icu  91  1e106000.usb, dwc2_hsotg:usb2
112:      16521          0       icu 112  asc_tx
113:       5109          0       icu 113  asc_rx
114:          0          0       icu 114  asc_err
126:          0          0       icu 126  gptu
127:          0          0       icu 127  gptu
128:          0          0       icu 128  gptu
129:          0          0       icu 129  gptu
130:          0          0       icu 130  gptu
131:          0          0       icu 131  gptu
144:     680534          0       icu 144  ath9k
161:          0          0       icu 161  ifx_pcie_rc0
ERR:          0

Speed test on a 6/1 DSL line through WAVE300 (I am not sure why iperf3 download does not perform well):