aredn: extend 2G band adding ch -3 and ch -4 (#210)

This commit is contained in:
Joe AE6XE 2022-01-21 19:52:26 -08:00 committed by GitHub
parent 781425ad59
commit ce4f694563
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 120 additions and 94 deletions

View File

@ -142,7 +142,7 @@ $iters = 0; # number of iterations
$mychan = `iwinfo $iface info | grep -i channel`; $mychan = `iwinfo $iface info | grep -i channel`;
$mychan =~ /Channel:\s+(-*\d+)/; $mychan =~ /Channel:\s+(-*\d+)/;
$mychan = ( ! defined $1 || ! int($1) || ! ($1 >= -2 && $1 <= 185) ) ? 0 : $1; $mychan = ( ! defined $1 || ! int($1) || ! ($1 >= -4 && $1 <= 185) ) ? 0 : $1;
# ch 76 - 99 are 3ghz since no part 15 usage (5ghz board with -2ghz transverter) # ch 76 - 99 are 3ghz since no part 15 usage (5ghz board with -2ghz transverter)
if ($mychan >= 76 and $mychan <= 99) if ($mychan >= 76 and $mychan <= 99)

View File

@ -49,6 +49,8 @@ sub rf_channel_map
7 => "(922)", 7 => "(922)",
}, },
'2400' => { '2400' => {
-4 => "-4 (2387)",
-3 => "-3 (2392)",
-2 => "-2 (2397)", -2 => "-2 (2397)",
-1 => "-1 (2402)", -1 => "-1 (2402)",
1 => "1 (2412)", 1 => "1 (2412)",

View File

@ -828,7 +828,7 @@ if ( ${wifi_enable} )
{ {
selopt($rfchannels->{$channelnumber}, $channelnumber, $wifi_channel); selopt($rfchannels->{$channelnumber}, $channelnumber, $wifi_channel);
} }
print "</select></td></tr>\n"; print "</select>&nbsp;&nbsp;<a href=\"/help.html\#channel\" target=\"_blank\"><img src=\"/qmark.png\"></a></td></tr>\n";
print "<tr><td>Channel Width</td>\n"; print "<tr><td>Channel Width</td>\n";
print "<td><select name=wifi_chanbw>\n"; print "<td><select name=wifi_chanbw>\n";

View File

@ -365,6 +365,12 @@ As always a dummy load on unused RF ports is recommended to keep out physical
contaminants and to avoid EMI/RFI interference. contaminants and to avoid EMI/RFI interference.
</p> </p>
<p> <p>
<a name="channel"></a>The <strong>Channel</strong> and <strong>Channel Width</strong>
selection determines the center frequency and signal bandwidth. AREDN reminds operators
that they must select frequencies, bandwidths, and power levels which comply with their
country's amateur radio license requirements.
</p>
<p>
<a name="power"></a>The <strong>Power</strong> setting controls the max power <a name="power"></a>The <strong>Power</strong> setting controls the max power
the unit may output. The node may decrease its power output as it enters higher the unit may output. The node may decrease its power output as it enters higher
speed data rates to maintain a linear spectrum. Some devices may have max power speed data rates to maintain a linear spectrum. Some devices may have max power

View File

@ -2,110 +2,33 @@ Index: openwrt/package/kernel/mac80211/patches/ath/301-extended-spectrum.patch
=================================================================== ===================================================================
--- /dev/null --- /dev/null
+++ openwrt/package/kernel/mac80211/patches/ath/301-extended-spectrum.patch +++ openwrt/package/kernel/mac80211/patches/ath/301-extended-spectrum.patch
@@ -0,0 +1,152 @@ @@ -0,0 +1,170 @@
+--- a/drivers/net/wireless/ath/ath9k/common-init.c +Index: a/drivers/net/wireless/ath/ath9k/hw.h
++++ b/drivers/net/wireless/ath/ath9k/common-init.c +===================================================================
+39a40,41
+> CHAN2G(2397, 39), /* Channel -2 */
+> CHAN2G(2402, 38), /* Channel -1 */
+70a73,99
+> /* _We_ claim this "For the HAMS" */
+> CHAN5G(5370, 40), /* Channel 74 */
+> CHAN5G(5375, 41), /* Channel 75 */
+> CHAN5G(5380, 42), /* Channel 76 */
+> CHAN5G(5385, 43), /* Channel 77 */
+> CHAN5G(5390, 44), /* Channel 78 */
+> CHAN5G(5395, 45), /* Channel 79 */
+> CHAN5G(5400, 46), /* Channel 80 */
+> CHAN5G(5405, 47), /* Channel 81 */
+> CHAN5G(5410, 48), /* Channel 82 */
+> CHAN5G(5415, 49), /* Channel 83 */
+> CHAN5G(5420, 50), /* Channel 84 */
+> CHAN5G(5425, 51), /* Channel 85 */
+> CHAN5G(5430, 52), /* Channel 86 */
+> CHAN5G(5435, 53), /* Channel 87 */
+> CHAN5G(5440, 54), /* Channel 88 */
+> CHAN5G(5445, 55), /* Channel 89 */
+> CHAN5G(5450, 56), /* Channel 90 */
+> CHAN5G(5455, 57), /* Channel 91 */
+> CHAN5G(5460, 58), /* Channel 92 */
+> CHAN5G(5465, 59), /* Channel 93 */
+> CHAN5G(5470, 60), /* Channel 94 */
+> CHAN5G(5475, 61), /* Channel 95 */
+> CHAN5G(5480, 62), /* Channel 96 */
+> CHAN5G(5485, 63), /* Channel 97 */
+> CHAN5G(5490, 64), /* Channel 98 */
+> CHAN5G(5495, 65), /* Channel 99 */
+88a118,164
+> /* _We_ claim this "For the HAMS" x2 */
+> CHAN5G(5655, 66), /* Channel 131 */
+> CHAN5G(5665, 67), /* Channel 133 */
+> CHAN5G(5670, 68), /* Channel 134 */
+> CHAN5G(5675, 69), /* Channel 135 */
+> CHAN5G(5685, 70), /* Channel 137 */
+> CHAN5G(5690, 71), /* Channel 138 */
+> CHAN5G(5695, 72), /* Channel 139 */
+> CHAN5G(5705, 73), /* Channel 141 */
+> CHAN5G(5710, 74), /* Channel 142 */
+> CHAN5G(5715, 75), /* Channel 143 */
+> CHAN5G(5720, 76), /* Channel 144 */
+> CHAN5G(5725, 77), /* Channel 145 */
+> CHAN5G(5730, 78), /* Channel 146 */
+> CHAN5G(5735, 79), /* Channel 147 */
+> CHAN5G(5740, 80), /* Channel 148 */
+> CHAN5G(5750, 81), /* Channel 150 */
+> CHAN5G(5755, 82), /* Channel 151 */
+> CHAN5G(5760, 83), /* Channel 152 */
+> CHAN5G(5770, 84), /* Channel 154 */
+> CHAN5G(5775, 85), /* Channel 155 */
+> CHAN5G(5780, 86), /* Channel 156 */
+> CHAN5G(5790, 87), /* Channel 158 */
+> CHAN5G(5795, 88), /* Channel 159 */
+> CHAN5G(5800, 89), /* Channel 160 */
+> CHAN5G(5810, 90), /* Channel 162 */
+> CHAN5G(5815, 91), /* Channel 163 */
+> CHAN5G(5820, 92), /* Channel 164 */
+> CHAN5G(5830, 93), /* Channel 166 */
+> CHAN5G(5835, 94), /* Channel 167 */
+> CHAN5G(5840, 95), /* Channel 168 */
+> CHAN5G(5845, 96), /* Channel 169 */
+> CHAN5G(5850, 97), /* Channel 170 */
+> CHAN5G(5855, 98), /* Channel 171 */
+> CHAN5G(5860, 99), /* Channel 172 */
+> CHAN5G(5865, 100), /* Channel 173 */
+> CHAN5G(5870, 101), /* Channel 174 */
+> CHAN5G(5875, 102), /* Channel 175 */
+> CHAN5G(5880, 103), /* Channel 176 */
+> CHAN5G(5885, 104), /* Channel 177 */
+> CHAN5G(5890, 105), /* Channel 178 */
+> CHAN5G(5895, 106), /* Channel 179 */
+> CHAN5G(5900, 107), /* Channel 180 */
+> CHAN5G(5905, 108), /* Channel 181 */
+> CHAN5G(5910, 109), /* Channel 182 */
+> CHAN5G(5915, 110), /* Channel 183 */
+> CHAN5G(5920, 111), /* Channel 184 */
+--- a/drivers/net/wireless/ath/ath9k/hw.h +--- a/drivers/net/wireless/ath/ath9k/hw.h
++++ b/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h
+@@ -71,7 +71,7 @@ +@@ -74,7 +74,7 @@
+ +
+ #define ATH9K_RSSI_BAD -128 + #define ATH9K_RSSI_BAD -128
+ +
+-#define ATH9K_NUM_CHANNELS 38 +-#define ATH9K_NUM_CHANNELS 38
++#define ATH9K_NUM_CHANNELS 112 ++#define ATH9K_NUM_CHANNELS 114
+ +
+ /* Register read/write primitives */ + /* Register read/write primitives */
+ #define REG_WRITE(_ah, _reg, _val) \ + #define REG_WRITE(_ah, _reg, _val) \
+Index: a/drivers/net/wireless/ath/regd.c
+===================================================================
+--- a/drivers/net/wireless/ath/regd.c +--- a/drivers/net/wireless/ath/regd.c
++++ b/drivers/net/wireless/ath/regd.c ++++ b/drivers/net/wireless/ath/regd.c
+@@ -33,6 +33,7 @@ static int __ath_regd_init(struct ath_re +@@ -34,6 +34,7 @@ static struct reg_dmn_pair_mapping *ath_
+ */ + */
+ +
+ /* Only these channels all allow active scan on all world regulatory domains */ + /* Only these channels all allow active scan on all world regulatory domains */
++#define ATH9K_2GHZ_CHN02_00 REG_RULE(2392-5, 2407+10, 40, 0, 20, 0) ++#define ATH9K_2GHZ_CHN02_00 REG_RULE(2387-10, 2407+10, 40, 0, 20, 0)
+ #define ATH9K_2GHZ_CH01_11 REG_RULE(2412-10, 2462+10, 40, 0, 20, 0) + #define ATH9K_2GHZ_CH01_11 REG_RULE(2412-10, 2462+10, 40, 0, 20, 0)
+ +
+ /* We enable active scan on these a case by case basis by regulatory domain */ + /* We enable active scan on these a case by case basis by regulatory domain */
+@@ -46,17 +47,25 @@ static int __ath_regd_init(struct ath_re +@@ -47,17 +48,25 @@ static struct reg_dmn_pair_mapping *ath_
+ #define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5240+10, 80, 0, 30, 0),\ + #define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5240+10, 80, 0, 30, 0),\
+ REG_RULE(5260-10, 5350+10, 80, 0, 30,\ + REG_RULE(5260-10, 5350+10, 80, 0, 30,\
+ NL80211_RRF_NO_IR) + NL80211_RRF_NO_IR)
@ -133,19 +56,19 @@ Index: openwrt/package/kernel/mac80211/patches/ath/301-extended-spectrum.patch
+ +
+ /* This one skips what we call "mid band" */ + /* This one skips what we call "mid band" */
+ #define ATH9K_5GHZ_NO_MIDBAND ATH9K_5GHZ_5150_5350, \ + #define ATH9K_5GHZ_NO_MIDBAND ATH9K_5GHZ_5150_5350, \
+Index: a/net/wireless/util.c
+===================================================================
+--- a/net/wireless/util.c +--- a/net/wireless/util.c
++++ b/net/wireless/util.c ++++ b/net/wireless/util.c
+@@ -72,13 +72,18 @@ int ieee80211_channel_to_frequency(int c +@@ -76,13 +76,16 @@ int ieee80211_channel_to_frequency(int c
+ return 0; /* not supported */ + return 0; /* not supported */
+ switch (band) { + switch (band) {
+ case NL80211_BAND_2GHZ: + case NL80211_BAND_2GHZ:
++ chan = (int)(char)chan; ++ chan = (int)(char)chan;
+ if (chan == 14) + if (chan == 14)
+ return 2484; + return 2484;
++ else if (chan == 255) ++ else if (chan > 14)
++ return 2402; ++ return 2402 - (255 - chan) * 5;
++ else if (chan == 254)
++ return 2397;
+ else if (chan < 14) + else if (chan < 14)
+ return 2407 + chan * 5; + return 2407 + chan * 5;
+ break; + break;
@ -155,6 +78,101 @@ Index: openwrt/package/kernel/mac80211/patches/ath/301-extended-spectrum.patch
+ return 4000 + chan * 5; + return 4000 + chan * 5;
+ else + else
+ return 5000 + chan * 5; + return 5000 + chan * 5;
+Index: a/drivers/net/wireless/ath/ath9k/common-init.c
+===================================================================
+--- a/drivers/net/wireless/ath/ath9k/common-init.c
++++ b/drivers/net/wireless/ath/ath9k/common-init.c
+@@ -37,6 +37,10 @@
+ * we have calibration data for all cards though to make
+ * this static */
+ static const struct ieee80211_channel ath9k_2ghz_chantable[] = {
++ CHAN2G(2387, 0), /* Channel -4 */
++ CHAN2G(2392, 0), /* Channel -3 */
++ CHAN2G(2397, 0), /* Channel -2 */
++ CHAN2G(2402, 0), /* Channel -1 */
+ CHAN2G(2412, 0), /* Channel 1 */
+ CHAN2G(2417, 1), /* Channel 2 */
+ CHAN2G(2422, 2), /* Channel 3 */
+@@ -68,6 +72,79 @@ static const struct ieee80211_channel at
+ CHAN5G(5280, 19), /* Channel 56 */
+ CHAN5G(5300, 20), /* Channel 60 */
+ CHAN5G(5320, 21), /* Channel 64 */
++ /* _We_ claim this "For the HAMS" */
++ CHAN5G(5370, 40), /* Channel 74 */
++ CHAN5G(5375, 41), /* Channel 75 */
++ CHAN5G(5380, 42), /* Channel 76 */
++ CHAN5G(5385, 43), /* Channel 77 */
++ CHAN5G(5390, 44), /* Channel 78 */
++ CHAN5G(5395, 45), /* Channel 79 */
++ CHAN5G(5400, 46), /* Channel 80 */
++ CHAN5G(5405, 47), /* Channel 81 */
++ CHAN5G(5410, 48), /* Channel 82 */
++ CHAN5G(5415, 49), /* Channel 83 */
++ CHAN5G(5420, 50), /* Channel 84 */
++ CHAN5G(5425, 51), /* Channel 85 */
++ CHAN5G(5430, 52), /* Channel 86 */
++ CHAN5G(5435, 53), /* Channel 87 */
++ CHAN5G(5440, 54), /* Channel 88 */
++ CHAN5G(5445, 55), /* Channel 89 */
++ CHAN5G(5450, 56), /* Channel 90 */
++ CHAN5G(5455, 57), /* Channel 91 */
++ CHAN5G(5460, 58), /* Channel 92 */
++ CHAN5G(5465, 59), /* Channel 93 */
++ CHAN5G(5470, 60), /* Channel 94 */
++ CHAN5G(5475, 61), /* Channel 95 */
++ CHAN5G(5480, 62), /* Channel 96 */
++ CHAN5G(5485, 63), /* Channel 97 */
++ CHAN5G(5490, 64), /* Channel 98 */
++ CHAN5G(5495, 65), /* Channel 99 */
++ CHAN5G(5655, 66), /* Channel 131 */
++ CHAN5G(5665, 67), /* Channel 133 */
++ CHAN5G(5670, 68), /* Channel 134 */
++ CHAN5G(5675, 69), /* Channel 135 */
++ CHAN5G(5685, 70), /* Channel 137 */
++ CHAN5G(5690, 71), /* Channel 138 */
++ CHAN5G(5695, 72), /* Channel 139 */
++ CHAN5G(5705, 73), /* Channel 141 */
++ CHAN5G(5710, 74), /* Channel 142 */
++ CHAN5G(5715, 75), /* Channel 143 */
++ CHAN5G(5720, 76), /* Channel 144 */
++ CHAN5G(5725, 77), /* Channel 145 */
++ CHAN5G(5730, 78), /* Channel 146 */
++ CHAN5G(5735, 79), /* Channel 147 */
++ CHAN5G(5740, 80), /* Channel 148 */
++ CHAN5G(5750, 81), /* Channel 150 */
++ CHAN5G(5755, 82), /* Channel 151 */
++ CHAN5G(5760, 83), /* Channel 152 */
++ CHAN5G(5770, 84), /* Channel 154 */
++ CHAN5G(5775, 85), /* Channel 155 */
++ CHAN5G(5780, 86), /* Channel 156 */
++ CHAN5G(5790, 87), /* Channel 158 */
++ CHAN5G(5795, 88), /* Channel 159 */
++ CHAN5G(5800, 89), /* Channel 160 */
++ CHAN5G(5810, 90), /* Channel 162 */
++ CHAN5G(5815, 91), /* Channel 163 */
++ CHAN5G(5820, 92), /* Channel 164 */
++ CHAN5G(5830, 93), /* Channel 166 */
++ CHAN5G(5835, 94), /* Channel 167 */
++ CHAN5G(5840, 95), /* Channel 168 */
++ CHAN5G(5845, 96), /* Channel 169 */
++ CHAN5G(5850, 97), /* Channel 170 */
++ CHAN5G(5855, 98), /* Channel 171 */
++ CHAN5G(5860, 99), /* Channel 172 */
++ CHAN5G(5865, 100), /* Channel 173 */
++ CHAN5G(5870, 101), /* Channel 174 */
++ CHAN5G(5875, 102), /* Channel 175 */
++ CHAN5G(5880, 103), /* Channel 176 */
++ CHAN5G(5885, 104), /* Channel 177 */
++ CHAN5G(5890, 105), /* Channel 178 */
++ CHAN5G(5895, 106), /* Channel 179 */
++ CHAN5G(5900, 107), /* Channel 180 */
++ CHAN5G(5905, 108), /* Channel 181 */
++ CHAN5G(5910, 109), /* Channel 182 */
++ CHAN5G(5915, 110), /* Channel 183 */
++ CHAN5G(5920, 111), /* Channel 184 */
+ /* _We_ call this "Middle band" */
+ CHAN5G(5500, 22), /* Channel 100 */
+ CHAN5G(5520, 23), /* Channel 104 */
Index: openwrt/package/network/utils/iw/patches/300-extended_spectrum.patch Index: openwrt/package/network/utils/iw/patches/300-extended_spectrum.patch
=================================================================== ===================================================================
--- /dev/null --- /dev/null