Support for 256-QAM over 2.4 GHz on QCA routers

Trying to make the switch to OpenWRT from DD-WRT, however there is one key feature that it's missing.

256 QAM support, on QCA devices. Particularly the Linksys EA8500 and Netgear R7800.

All I've found in regards to 256 QAM and OpenWRT are these two threads:

Are there any plans of adding it in a future release? Or is there a way to add support for it to existing builds?

Would appreciate all suggestions.

Hmmm, both of those quotes mention Broadcom devices.

I'm looking at an ipq4019-based device right now and it seems to support 256-QAM (MCS index 8, 9) on 2.4 GHz without anything special needing to be done. Edit: Past enabling VHT, which I have not done for 2.4 GHz.

There is, of course, the question of what you'd do with it, as I don't think there are many consumer devices that support it, being non-standard.

Wiphy phy1
        max # scan SSIDs: 16
        max scan IEs length: 195 bytes
        max # sched scan SSIDs: 0
        max # match sets: 0
        max # scan plans: 1
        max scan plan interval: -1
        max scan plan iterations: 0
        Retry short limit: 7
        Retry long limit: 4
        Coverage class: 0 (up to 0m)
        Device supports AP-side u-APSD.
        Available Antennas: TX 0x3 RX 0x3
        Configured Antennas: TX 0x3 RX 0x3
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * monitor
                 * mesh point
                 * P2P-client
                 * P2P-GO
                 * P2P-device
        Band 1:
                Capabilities: 0x19ef
                        RX LDPC
                        HT20/HT40
                        SM Power Save disabled
                        RX HT20 SGI
                        RX HT40 SGI
                        TX STBC
                        RX STBC 1-stream
                        Max AMSDU length: 7935 bytes
                        DSSS/CCK HT40
                Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
                Minimum RX AMPDU time spacing: 8 usec (0x06)
                HT TX/RX MCS rate indexes supported: 0-15
                VHT Capabilities (0x339959b2):
                        Max MPDU length: 11454
                        Supported Channel Width: neither 160 nor 80+80
                        RX LDPC
                        short GI (80 MHz)
                        TX STBC
                        SU Beamformer
                        SU Beamformee
                        MU Beamformer
                        MU Beamformee
                        RX antenna pattern consistency
                        TX antenna pattern consistency
                VHT RX MCS set:
                        1 streams: MCS 0-9
                        2 streams: MCS 0-9
                        3 streams: not supported
                        4 streams: not supported
                        5 streams: not supported
                        6 streams: not supported
                        7 streams: not supported
                        8 streams: not supported
                VHT RX highest supported: 0 Mbps
                VHT TX MCS set:
                        1 streams: MCS 0-9
                        2 streams: MCS 0-9
                        3 streams: not supported
                        4 streams: not supported
                        5 streams: not supported
                        6 streams: not supported
                        7 streams: not supported
                        8 streams: not supported
                VHT TX highest supported: 0 Mbps
                Frequencies:
                        * 2412 MHz [1] (30.0 dBm)
                        * 2417 MHz [2] (30.0 dBm)
                        * 2422 MHz [3] (30.0 dBm)
                        * 2427 MHz [4] (30.0 dBm)
                        * 2432 MHz [5] (30.0 dBm)
                        * 2437 MHz [6] (30.0 dBm)
                        * 2442 MHz [7] (30.0 dBm)
                        * 2447 MHz [8] (30.0 dBm)
                        * 2452 MHz [9] (30.0 dBm)
                        * 2457 MHz [10] (30.0 dBm)
                        * 2462 MHz [11] (30.0 dBm)
                        * 2467 MHz [12] (disabled)
                        * 2472 MHz [13] (disabled)
                        * 2484 MHz [14] (disabled)
2 Likes

Hi Jeff,

Thanks for replying. I'll check if MCS 8-9 are supported on my Linksys EA8500.

The first thread by Ansuel is about the ath10k FW used on QCA devices.

On DD-WRT or stock firmware, my smartphones connect to the Linksys EA8500 (IPQ806X) at a rate of 192 Mbps (2.4 GHz + 256 QAM). On OpenWRT, even with 40 MHz enabled, the same smartphones only connect at 144 Mbps.

Is there anything I'd have to add to hostapd perhaps to get this working?

When you say "192 Mbps", is that based on actual throughput, or what the UI of the router says?

Very often firmware reports, well, shall we say "optimistic" values ("I've got a Brand X router and it says I can get NNNN Mbps") rather than actuals. Agreed, it might be that your cell phone has a Broadcom radio that is capable of those rates. For me, unless you are seeing real, measurable different in throughput, it would be hard to justify the work to enable it in hostapd.



Aside: Being a product manager by day, I can hear the conversation now

Can't we say something about how our router is faster?

Yeah, like "Ours goes to 11". Oooh, since the hardware is there for 5 GHz, even if its non-standard, we can claim 256-QAM on 2.4 GHz

How much faster?

Like 31.735%, but it won't work with any other devices. It's non-standard.

Brilliant, yeah, we can claim "30% faster speeds with Broadcom Super Speed 256" OK, I'll work with legal on that

Footnote as "When used with interoperable devices." 6 pt text or larger please, can be anywhere on the box Must be on all promotional material at 6 pt or larger.

2 Likes

When you say "192 Mbps", is that based on actual throughput, or what the UI of the router says?
Actual throughput. I've tested this on multiple smartphones from different OEMs. The link rate on the phone shows 192 Mbps, and there is a very clear difference in throughput when 256 QAM is enabled, versus when it isn't.

The reason I have most clients on 2.4 instead of 5 GHz is due to range on 5 GHz being absolutely terrible because of concrete walls.

Also, the product manager bit of your post was very enjoyable. Thank you for that.

Here's what my EA8500 shows for both interfaces:

2.4 GHz - https://pastebin.com/V8j6aUSR

5 GHz - https://pastebin.com/MhDNdgsT

Low SNR and high-order modulation are in conflict with each other. While they may help in high-signal cases, using higher-order modulation won't help in moderate- or low-level situations

Here's a 16-QAM constellation. Each point represents the decided signal at one instant of time. If the dot crosses out of its "box", then there is an error in the symbol, impacting at least one bit, if not more. The "blobbiness" of each dot is related to the SNR. The side-to-side smearing is due to errors in phase recovery (the constellation "rotates") and is also generally increased with lower SNR. (The gain or graph isn't quite right here, as each blob should be in the center of the box.) A 16-QAM signal is a 4x4 box, a 256-QAM signal packs 16x16 into the same space -- each box is 4x smaller in each dimension.



Source: https://en.wikipedia.org/wiki/Constellation_diagram#/media/File:FDD_16-QAM.png

Before diving into patches, checking what you can get for throughput may tell you if you're even close to being able to support them with your SNR. If you're significantly below 100 mbps throughput already, I don't think that enabling the higher rates would help.



Edit:

Looking at the 2.4 GHz paste, it looks like the AP might not be enabling anything faster than 54 Mbps. This might be due to permitting "G" connections, or because of inadequate security that is preventing "N" mode.

If you post your /etc/config/wireless (preferably using the pre-formatted button </> so it is readable), redacting your keys and other sensitive information, perhaps there is something obvious there.

1 Like

Thanks for the QAM explanation. Will read through it thoroughly tonight to fully understand how it works.

Here's the wireless config:

config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11g'
        option path 'soc/1b500000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
        option channel '1'
        option htmode 'HT40'
        option txpower '30'
        option country 'US'
        option legacy_rates '0'
        option noscan '1'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'EA8500 - 2.4GHz'
        option encryption 'psk2+ccmp'
        option key ''
        option wps_pushbutton '0'

config wifi-device 'radio1'
        option type 'mac80211'
        option channel '36'
        option hwmode '11a'
        option path 'soc/1b700000.pci/pci0001:00/0001:00:00.0/0001:01:00.0'
        option htmode 'VHT80'
        option txpower '23'
        option country 'US'
        option legacy_rates '1'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'EA8500 - 5GHz'
        option encryption 'psk2+ccmp'
        option key ''
        option wps_pushbutton '0'

I haven’t explored the source, but my gut feeling is that netifd and associated helper scripts will reject VHT on 2.4ghz as nonstandard.
Whether hostapd allows it or not I don’t know.
That leaves you with manipulating the driver directly to set those higher MCS values..?

1 Like