Support for WAVE 300 Wi-Fi chip

lq-wave-300-03.05.00.00.53.a2676e338c1e.rflib.wls.src.tar.bz2
lq-wave-300-03.05.00.00.53.a2676e338c1e.gpl.wls.src.tar.bz2

I was able to compile 3.05 version, but it fails during initialization (something with magic value return). I'm using 3.4.2 (i think) firmware.

edit: both modules seems to be licensed as GPL (it can be a build system specific though). There is a version number in sta_upper, ap_upper and contr_lm. This means we need an updated firmware too. Progmodel binary is selected by autodetected chip revision. The newest firmware I have is from tplink TD-W9980B(DE)_150519:

version number: FW_3.4.2_r3444

or maybe archer VR200 (the rxxx versions are pretty chaotic, it seems it resets from time to time):

3.4.2.40.05_NoPsTxCancel_r4005

(↑ this will be written to dmesg log)

As I was afraid there needs to be a match between driver version and firmware version. 3.5 driver expects some structure to have 5 uints and magic number and 3.4 firmware returns only 4 uints and a magic number. This can be probably backported from various pre 3.5 sources, but still the firmware is not the newest and it would be nice to have it updated. Also the newest sta_upper I have is only FW_3.2.1_r5437 it seems either STA mode (wave300 is connecting to another AP) was obsoleted (only in oldest tplink firmwares) or merged into AP mode. With ap=1 parameter the sta_upper is not required (and viceversa). If you have wave300 device (I've checked tplink W9980, W8980, VR200 and netgear D6100), try to obtain the wifi firmware from /lib/firmware and check if there is a newer version.

edit2: hmm I fixed some kernel anachronisms, but it seems the 3.5 driver has a different message ID for communication with (nonpresent by now) 3.5 firmware, so the v3.4 firmware cannot be used. I will probably use 3.4 branch.

The phinechomm download not work, to decompress say inespected end of file

Hmm I remember decompresor said something similar too, but the driver is fine, all the important data was received. My copy is little over 1.1 GB (decimal).

your device's progmodel binary is best,tx/rx power and others are better
ar10 and wave300
https://drive.google.com/file/d/10DgiAccK49eqVUD7eleJoQZVMeNfg84l/view?usp=sharing

Thanks, but I've got the progmodel from that big package already. The problem is not in the progmodel, but in ap_upper* and contr_lm*, these are not present in the big package (with v3.5 driver), but they are required as in v3.4 the ap_upper/contr_lm* do have an incompatible ABI.

Wave300 support was dropped in 3.5 version - it is written in a manual

Well it may be that, but 03.05.00.00.53 driver still compiles with configuration set to wave300 and tries to load ap_upper_wave300.bin firmware (partially with a success). And progmodels files for wave300 are even in 5.x (but the progmodel is not probably that critical for compatibility). It could be dropped perhaps in like 03.05.00.01.00.

Do you have some kind of manual? Can you share it?

It was in UGW archive from link to google drive

According to the release notes in UGW 7.1, they were adding fixes for WAVE300 until v05.xx (I guess probably v05.01, I dont remember exactly). So how it can be that they dropped support in v3.05, I dont understand. But I think in order for this to work we may need to write the driver ourselves so we could just use an already working driver which works to some extent and then start from there maybe. I am not knowledgeable in this regard but people with right information may be able to help.

If there was some manual from that big google drive tarball, it must have been in the parts which I probably didn't download :frowning: (same as @kikox1 ). There is no pdf nor doc manual... (unless it is hidden in some compressed tarball). My bad to not check the file before :smiley: . But it doesn't matter. If there is no ap_upper*.bin for v3.5, we could not run the wifi card anyway.

From the release notes it seems the v5 did branch from v3.2, there is no mention of v3.4 anywhere.

I can work with v3.4 source code, the newest driver version seems to be from GPL sources of Dlink DWR-966 (I didn't even knew dlink made lantiq modem/router, so there can be probably a newer version). This version contain v3.4 firmware for STA mode (!). So if there is not v3.5 support I can abbandon it (only two problems are if a v3.5 firmware will show it will mean a wasted work for me with porting v3.4 to modern kernel, and that v3.4 doesn't have source for rflib - I can interpolate it from v3.2 and v3.5 and by decompiler :smiley: - but again a potentialy wasted work ).

There is a whole lot of documentation and info in UGW 6.1 though. But the file is huge and I can upload it but as I have a 100kBytes/s as max upload speed, it might take a while. But do let me know if you need it.

Docs

You could probably make a list of files contained (find > filedump.log). Anything with mention "wave-300", "wave300", filenames named *.bin, tarball lq-wave-300* and probably that "WAVE WIFI" release notes page.

Well I think I did something better than that. I compressed the whole image that I extracted and it is around 800mb which is a lot less than original. I tried to compress the original install.sh file but it wouldn't compress anymore and it's around 2gb so I think 800mb is better plus you don't need to extract it and just use index.html and have a look at it. I'm going to upload it to Google drive so it should be available in the morning. I'll update once it's finished.

Edit: Here are the files https://drive.google.com/open?id=1tvbF850_9T23MTAbpIBMa3OvQnL-S5XA

1 Like

Thanks!
I didn't have the 6.1.1, the pdfs are a nice explanation. BTW your copy of phicomm.tar.xz is 1106595840 bytes long and incomplete too.

Conclusion:
The v3.5 driver doesn't officially support all parts for wave300 card. The source code still have the wave300 specific code and there are probably updated Progmodel files, only the interfacing firmwares (upper and contr_lm) are missing (no one probably wanted to recompile it with the new commands ID - btw the interfacing firmware is just MIPS binary :smiley: ).

The v3.4 newest known GPL driver can be found in the sources of D-link DWR-966 driver. The rflib is distributed as an object file in the same place (but it is statically linked into GPL module). Interfacing firmwares are there too. These ones supports AP and STA mode too.

The newest (and probably last versions ever) interfacing firmwares v3.4 are downloadable from TP-link VR200 GPL firmware update. You can just extract the rootfs by 7zip. There is no STA support, but you should be able to use either two separate firmware sets or use sta_upper with the older contr_lm. These interfacing firmwares are mentioned in 6.1.1 release notes. The firmware files in Tplink W9980/8980 are much older.

The work will start on lq-wave-300-03.04.02.00.25 driver and rflib will be backported from lq-wave-300-03.05.00.00.53 (phicomm tarball, static linking makes GPL'ed modules) and from lq-wave-300-03.05.00.00.31 (6.1.1 tarball) and possibly sourced rflib from vittorio88's v3.2 on github. I would not recommend just linking binary lq-wave-300-03.04.02.00.25 rflib as these object files are for xrx3xx and not xrx2xx and they may have different constants. This way we have IMO the biggest chance for the success :smiley: .

If I extract the tar through 7z in Windows I dont get any errors but extracting would cause problems because the files with same names get replaced or get renamed which doesnt happen in Linux. So I am not sure how can we recover it through that.

I don't think we need the rest of the file that hard. The really useful thing was lq-wave-300-* source code and wave300 firmware is probably not there (as 3.5 made it deprecated).

1 Like

In the UGW-6.1.1 en folder Docs/02_Release_Notes in file XWAY_xRX300_WIFI_LinuxDriver_Rel3.5.0_RN_Rev1.0.pdf page 4 say:
"There is no support for the XWAYTM WAVE300 family devices.
The primary goal of Release 3.5.0 is to include support for the newly released PasspointTM revision 2.0 certification test plan."

and in the file UGW_Rel6.1.1_RN_Rev1.0.pdf page 68 say:
"3.9 Wireless LAN Subsystem
This chapter provides an overview of the components packaged in UGW-6.1.1 release. It supports all XWAYTM xRX300 family devices as listed in Table 2. There is no support fo the XWAY WAVE300 family devices._
Starting with Wi-Fi Linux® Driver Release 3.5.0 and onwards, the XWAYTM WAVE300 family devices is no longer supported."

I think that's why rflib is in binary
lq-wave-300-Source03.05.00.00.31.35323c99ad43.wls.src distribution Part Binary/Part Source Licence GPL_BSD

08/Feature_Support UGW_Rel6.1.1_CS_Rev1.0.pdf pag 11

Exists Addon CDs with Premium Licenses available for distribution and need specific license agreement with Lantiq before being distributed to customers:
UGW-6.1.1-WLAN-CD.zip This CD is a Premium Package and contains the sources for the Lantiq Wireless Subsystem.

01_Getting_Started/UGW_Rel6.1.1_GS_Rev1.0.pdf pag9

Contents of WLAN_CD

lq-wave-300-03.05.00.00.31.35323c99ad43.wls.src License GPL_BSD Distribution Source

lq-wave-300-03.04.02.00.25.c9c85872fd07.rflib.wls.src License Lantiq Distribution Source

08/Feature_Support UGW_Rel6.1.1_CS_Rev1.0.pdf pag 18

Licence Type Lantiq Lantiq – Lantiq Productive: License Grant: Evaluation and Demonstration License Grant & Productive Use License Grant

In UGW_6.10 there is the driver 3.4.2

02/Release_Notes/UGW_Rel6.1.1_RN_Rev1.0.pdf pag 14

1 Like

Hello,

lq-wave-300-05.03.00.00.47.24fb8226b611.gpl.wls.src.tar.bz2 contains the proper way to up-port procfs and generic netlink, which possibly may be the reason me and Mandrake's driver never worked. The way they up-ported those pieces of code, and the way I did were not very different in the end, however there were some differences.

The code was up-ported around the following sections of code : #ifndef MTCFG_LINUX_BACKPORT which is a config option deep in make menuconfig options.

One solution may be to manually extract and backport those patches to lq-wave-300-03.04.02.00.25.c9c85872fd07.gpl.wls.src.tar if that's the latest you can work with.

I

yeah I'm doing it for last few hours :smiley: . Actually there is a problem with 3.5 rflib, it cannot parse the eeprom, so the module will crash sooner than it loads firmware.

BTW the 3.4 rflib binary object files doesn't even link with 3.4 source code (there are missing symbols for some configurations).