Jump to content

Improved XR819 driver


Recommended Posts

I know most of you probably don't want to hear any more about this chip, but I recently fixed quite a few long standing issues.
It's not perfect yet, but it improves scanning/reliable reconnect, incoming frames missed in powersave, ping times, and rate selection.
Here's the patch set: https://github.com/fifteenhex/xradio/pull/12

Edit: rebased from karabek: https://github.com/dbeinder/xradio/commits/karabek_rebase
And some important comments about powersave: https://github.com/fifteenhex/xradio/pull/11#issuecomment-616226880
In short, relative to the current version, with powersave on, idle consumption is lower by 200mW, but with powersave off, it is 300mW higher

- so that should be a consideration if you want to integrate this into Armbian builds for tiny boards like OPZero.

Of course a 65MBit chip will never be fast, but I'd say it is pretty usable as an IoT node now. This hasn't seen much testing,  so your comments are appreciated.

Link to comment
Share on other sites

Sounds indeed interesting :)

There are many people here who will help you to test, but will lack of know how to get this into their Linux. If you have a step-by-step  or a  .deb   or something to extract at the right place.  People will walk with you that way.


2 hours ago, yoq said:

but if left off, it's up by 300mW

Do you mean if you 'switch off XR819"  or if you power off the device?

Because the latter is known, and is not related to XR819.  Keyword AR100, you find plenty in the forum  and if you have some improvements there as well  :wub:


Link to comment
Share on other sites

I repharsed that sentence, I was talking about WiFi powersave polling, check my github comments for more details. In the current version, it is active but somewhat broken, and in idle uses about 200mW more than it needs to. On the other hand if you switch powersave mode fully off,  the XR819 uses 300mW more in idle than the current driver. My patches enable setting powersave mode from userspace with iwconfig, and so power consumption can go up quite a bit if powersave is not ON by default.

OPZ idle at 816MHz, WiFi driver not loaded: 610mW
Connected to WiFi network & idle/no traffic:

Current XR819 driver armbian/karabek: 910mW (slightly broken powersave)

My patch: 700mW (powersave ON)

My patch: 1220mW (powersave OFF, enables low latency incoming pings)

Unfortunately, I believe kernel modules are not redistributable as compiled binaries,  I think they only load if the kernel version matches perfectly.

Link to comment
Share on other sites

4 hours ago, yoq said:

I know most of you probably don't want to hear any more

This is nice to hear! :thumbup: Its not complaining and ranting :P


@karabek also added some improvements - currently we use his branch, which improvements we want to keep. So some git-merge-fu and we can proceed to testing ...

Link to comment
Share on other sites

Alright, I rebased my changes on karabek's repository: https://github.com/dbeinder/xradio/tree/karabek_rebase

The powersave commit is now split, with the power-lowering fix in the first part, and enabling userspace control over powersave in the second.

After some more direct comparison, I'm starting to think the part about removing driver-level TX rate selection doesn't make a measurable difference, in either throughput or dropped packets.
But since my much simpler code doesn't seem to make it worse either, I think that was just hacks built around the CW11x0 and simply never removed.
But as long as there is no upside,  it's probably better not to diverge too much from the CW1200 mainline version, so I left that in a separate branch for now: https://github.com/dbeinder/xradio/commits/karabek_rebase_minstrel

Link to comment
Share on other sites

Congratulations and thanks to dbeinder (yoq) and fifteenhex for their patience and good work on the XR819 driver.


What do we need to do to get the XR819 driver finally adopted into the mainline kernel? Excuse my ignorance, and if this is a naive question!


I'm keen on using the Orange Pi Zero for a fairly substantial project. I had this from Xunlong about an alternative wifi chip with the same footprint:


"We dont have plan to use alternative wifi chip for this model and have no idea on this.




I'd love to see the XR819 driver in mainline, to reward all this fantastic effort, and to improve confidence in the OPi0 LTS for our project. Any thoughts?







Link to comment
Share on other sites

On 4/21/2020 at 3:28 PM, yoq said:

most of you probably don't want to hear any more about this chip


Changes in kernel 5.19.2 -> are responsible to adjust the code yet again :D I tried, but I find myself running in the circles ... Anyone more familiar with this driver? @arclight  @piknew @Skupsy @Icenowy

We are still attached to @karabekfork https://github.com/armbian/build/blob/master/lib/compilation-prepare.sh#L418-L424 but this https://github.com/dbeinder/xradio/commits/karabek_rebase looks like most recent.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines