OpenWrt Forum Archive

Topic: How to get 5GHz channel above 48 on EA3500

The content of this topic has been archived on 12 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hello,

The available 5GHz channel setting on my EA3500 shows only 36-48, how to get the channel above 48?

Thanks.

any update or solution? I have the exact same issue so I had to revert back to stock firmware to access upper 5Ghz channels.

The wireless driver would need support for DFS.

I guess that means the recommended version on the EA3500 page does not support it...

How would I check out if there is an available driver that  support it or not?

It looks to me like the hardware uses an older Marvell, which probably doesn't support DFS.

Running iw phy1 info (phy1 being your 5 GHz radio) should show DFS info if it is supported, like this:

# iw phy1 info
Wiphy phy1
    max # scan SSIDs: 4
    max scan IEs length: 2261 bytes
    max # sched scan SSIDs: 0
    max # match sets: 0
    Retry short limit: 7
    Retry long limit: 4
    Coverage class: 0 (up to 0m)
    Device supports AP-side u-APSD.
    Device supports T-DLS.
    Available Antennas: TX 0x3 RX 0x3
    Configured Antennas: TX 0x3 RX 0x3
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
         * P2P-client
         * P2P-GO
         * outside context of a BSS
    Band 2:
        Capabilities: 0x11ce
            HT20/HT40
            SM Power Save disabled
            RX HT40 SGI
            TX STBC
            RX STBC 1-stream
            Max AMSDU length: 3839 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
        Frequencies:
            * 5180 MHz [36] (17.0 dBm)
            * 5200 MHz [40] (17.0 dBm)
            * 5220 MHz [44] (17.0 dBm)
            * 5240 MHz [48] (17.0 dBm)
            * 5260 MHz [52] (20.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5280 MHz [56] (20.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5300 MHz [60] (20.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5320 MHz [64] (20.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5500 MHz [100] (21.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5520 MHz [104] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5540 MHz [108] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5560 MHz [112] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5580 MHz [116] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5600 MHz [120] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5620 MHz [124] (24.0 dBm) (radar detection)
              DFS state: usable (for 37085 sec)
              DFS CAC time: 60000 ms
            * 5640 MHz [128] (24.0 dBm) (radar detection)
              DFS state: usable (for 37085 sec)
              DFS CAC time: 60000 ms
            * 5660 MHz [132] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5680 MHz [136] (24.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5700 MHz [140] (21.0 dBm) (radar detection)
              DFS state: usable (for 511498 sec)
              DFS CAC time: 60000 ms
            * 5745 MHz [149] (disabled)
            * 5765 MHz [153] (disabled)
            * 5785 MHz [157] (disabled)
            * 5805 MHz [161] (disabled)
            * 5825 MHz [165] (disabled)
    valid interface combinations:
         * #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1, #{ IBSS } <= 1,
           total <= 2048, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz, 40 MHz }

         * #{ WDS } <= 2048,
           total <= 2048, #channels <= 1, STA/AP BI must match
    HT Capability overrides:
         * MCS: ff ff ff ff ff ff ff ff ff ff
         * maximum A-MSDU length
         * supported channel width
         * short GI for 40 MHz
         * max A-MPDU length exponent
         * min MPDU start spacing

Why does this also disable channels 149-161 that don't require DFS?

remove DFS flag from frequency range it's been set to before building image

Where is the DFS flag set?

check compat-wireless, mac80211 and regdb

Thanks for the advice but it didn't seem to help. I updated regdb.txt to remove NO-IR, DFS, and DFS-FCC, as in the following diff:

diff --git a/package/kernel/mac80211/files/regdb.txt b/package/kernel/mac80211/files/regdb.txt
index 463ace3..210cba1 100644
--- a/package/kernel/mac80211/files/regdb.txt
+++ b/package/kernel/mac80211/files/regdb.txt
@@ -8,11 +8,11 @@ country 00:
        # Channel 36 - 48
        (5170 - 5250 @ 80), (20), AUTO-BW
        # Channel 52 - 64
-       (5250 - 5330 @ 80), (20), NO-IR, DFS, AUTO-BW
+       (5250 - 5330 @ 80), (20), AUTO-BW
        # Channel 100 - 144
-       (5490 - 5730 @ 160), (20), NO-IR, DFS
+       (5490 - 5730 @ 160), (20)
        # Channel 149 - 165
-       (5735 - 5835 @ 80), (20), NO-IR
+       (5735 - 5835 @ 80), (20)
        # IEEE 802.11ad (60GHz), channels 1..3
        (57240 - 63720 @ 2160), (0)
 
@@ -1161,12 +1161,12 @@ country UG: DFS-FCC
        (5490 - 5730 @ 160), (24), DFS
        (5735 - 5835 @ 80), (30)
 
-country US: DFS-FCC
+country US:
        (2402 - 2472 @ 40), (30)
        # 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients
        (5170 - 5250 @ 80), (23), AUTO-BW
-       (5250 - 5330 @ 80), (23), DFS, AUTO-BW
-       (5490 - 5730 @ 160), (23), DFS
+       (5250 - 5330 @ 80), (23), AUTO-BW
+       (5490 - 5730 @ 160), (23)
        (5735 - 5835 @ 80), (30)
        # 60g band

and built an image. Now `iw reg get' reflects this change, but `iw phy1 show' still only shows channels 36-48.

I managed to add the higher non-DFS channels by dropping this patch into the source tree as package/kernel/mac80211/patches/980-mwl8k_channels_50.patch:

--- a/drivers/net/wireless/marvell/mwl8k.c
+++ b/drivers/net/wireless/marvell/mwl8k.c
@@ -199,7 +199,7 @@
        struct ieee80211_channel channels_24[14];
        struct ieee80211_rate rates_24[13];
        struct ieee80211_supported_band band_50;
-       struct ieee80211_channel channels_50[4];
+       struct ieee80211_channel channels_50[9];
        struct ieee80211_rate rates_50[8];
        u32 ap_macids_supported;
        u32 sta_macids_supported;
@@ -383,6 +383,12 @@
        { .band = NL80211_BAND_5GHZ, .center_freq = 5200, .hw_value = 40, },
        { .band = NL80211_BAND_5GHZ, .center_freq = 5220, .hw_value = 44, },
        { .band = NL80211_BAND_5GHZ, .center_freq = 5240, .hw_value = 48, },
+
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5745, .hw_value = 149, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5765, .hw_value = 153, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5785, .hw_value = 157, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5805, .hw_value = 161, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5825, .hw_value = 165, },
 };
 
 static const struct ieee80211_rate mwl8k_rates_50[] = {
nickptar wrote:

I managed to add the higher non-DFS channels by dropping this patch into the source tree as package/kernel/mac80211/patches/980-mwl8k_channels_50.patch:

--- a/drivers/net/wireless/marvell/mwl8k.c
+++ b/drivers/net/wireless/marvell/mwl8k.c
@@ -199,7 +199,7 @@
        struct ieee80211_channel channels_24[14];
        struct ieee80211_rate rates_24[13];
        struct ieee80211_supported_band band_50;
-       struct ieee80211_channel channels_50[4];
+       struct ieee80211_channel channels_50[9];
        struct ieee80211_rate rates_50[8];
        u32 ap_macids_supported;
        u32 sta_macids_supported;
@@ -383,6 +383,12 @@
        { .band = NL80211_BAND_5GHZ, .center_freq = 5200, .hw_value = 40, },
        { .band = NL80211_BAND_5GHZ, .center_freq = 5220, .hw_value = 44, },
        { .band = NL80211_BAND_5GHZ, .center_freq = 5240, .hw_value = 48, },
+
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5745, .hw_value = 149, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5765, .hw_value = 153, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5785, .hw_value = 157, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5805, .hw_value = 161, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5825, .hw_value = 165, },
 };
 
 static const struct ieee80211_rate mwl8k_rates_50[] = {

Hey nickptar,

Thanks for your work!

Did you get it to work i.e. transmitting/receiving in the 149+ channels? If so, would you like to submit a PR?

(Last edited by kyzhk on 13 Aug 2017, 03:06)

kyzhk wrote:
nickptar wrote:

I managed to add the higher non-DFS channels by dropping this patch into the source tree as package/kernel/mac80211/patches/980-mwl8k_channels_50.patch:

--- a/drivers/net/wireless/marvell/mwl8k.c
+++ b/drivers/net/wireless/marvell/mwl8k.c
@@ -199,7 +199,7 @@
        struct ieee80211_channel channels_24[14];
        struct ieee80211_rate rates_24[13];
        struct ieee80211_supported_band band_50;
-       struct ieee80211_channel channels_50[4];
+       struct ieee80211_channel channels_50[9];
        struct ieee80211_rate rates_50[8];
        u32 ap_macids_supported;
        u32 sta_macids_supported;
@@ -383,6 +383,12 @@
        { .band = NL80211_BAND_5GHZ, .center_freq = 5200, .hw_value = 40, },
        { .band = NL80211_BAND_5GHZ, .center_freq = 5220, .hw_value = 44, },
        { .band = NL80211_BAND_5GHZ, .center_freq = 5240, .hw_value = 48, },
+
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5745, .hw_value = 149, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5765, .hw_value = 153, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5785, .hw_value = 157, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5805, .hw_value = 161, },
+       { .band = NL80211_BAND_5GHZ, .center_freq = 5825, .hw_value = 165, },
 };
 
 static const struct ieee80211_rate mwl8k_rates_50[] = {

Hey nickptar,

Thanks for your work!

Did you get it to work i.e. transmitting/receiving in the 149+ channels? If so, would you like to submit a PR?

I have compiled using this patch just now. I will test out the higher channels and report back soon. I am not sure how to properly submit a PR if it does work. I would rather leave that to nickptar anyway.

I can't seem to transmit/receive on the upper channels after making changes to: 

/drivers/net/wireless/marvell/mwl8k.c
and
/package/kernel/mac80211/files/regdb.txt

Couldn't get your exact patch to work for some reason. Had to edit mwl8k.c manually. The driver was using:

 .band = IEEE80211_BAND_5GHZ

instead of:

 .band = NL80211_BAND_5GHZ
dangersnake wrote:

I can't seem to transmit/receive on the upper channels after making changes to: 

/drivers/net/wireless/marvell/mwl8k.c
and
/package/kernel/mac80211/files/regdb.txt

Couldn't get your exact patch to work for some reason. Had to edit mwl8k.c manually. The driver was using:

 .band = IEEE80211_BAND_5GHZ

instead of:

 .band = NL80211_BAND_5GHZ

Are you saying that after changing

.band = IEEE80211... to NL80211... and recompiling successfully enabled the upper 5ghz channel with mwl8k driver?

In this case could you provide the binary driver to me - I can help test the upper 5ghz channels.


Also, what changes did you make to /package/kernel/mac80211/files/regdb.txt?

Assuming regdb.txt is referenced by mac80211 module compilation, please also let me have the mac80211.o / cfg80211.o modules.

Thanks!

(Last edited by kyzhk on 29 Aug 2017, 23:31)

I was not able to get the upper channels to show up or work at all. Let me look at the exact changes again.

I just made a patch have all 5G bands enabled. Will give out the test build after I run some basic test.

Thanks for this build mate I have a mate with this router and this was stopping him from flashing to lede.

I found a problem in my build.
Even you can choose channel 52 - 144 in luci for AP mode, the wlan1 interface will not enable because the chip doesn't support DFS. Hence if you put the channel in "auto" it will not not go up because it always choose some DFS channel and failed (because DFS channels are cleaner in most case).

On the other hand, enable 52-144 can help on client mode. Think about that a main router support DFS and choose any channel between 52-144. wlan1 on EA3500 can still be used as Client mode and then it can be used as extender or relay bridge.

I am not not sure if I should keep channels for 52-144. Those channels definitely will confuse some users.

Pardon my ignorance (I am new to OpenWRT), is this the same driver as the one for E4200v2 (also known as EA4500v1)? How do I install/compile the code on my router?

EA4500 uses same mwl8k driver as EA3500.

My pull request has been obsoleted so you need to pick the change to your build by yourself.

@ChuckHL
I made build for EA4500 in https://drive.google.com/open?id=1tmtI3 … _KYIGZOhjE
It enables all 5G bands and no need for DFS (if choose country "US"). Just for test.
However, I don't have EA4500v1 hw so, I have no way to verify it.

The discussion might have continued from here.