wifi: 40 MHz HE/VHT htmodes unusable — validator only accepts HE40±/VHT40±, which OpenWrt 24.10 ignores (silent 20 MHz)
@rslater-cs is already working on this.
Since Oct 21, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 78/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Domain
- networking, testing
Research direction
Start by reading the htmode allow-lists in src/services/hal/types/capability_args.lua and src/services/hal/drivers/radio.lua, then compare them with the mac80211.sh matching behavior described in the issue. Locate the existing validator tests and add coverage for HE40 and VHT40, plus the chosen handling of signed 40 MHz variants. The change is done when validation accepts OpenWrt-compatible values, handles or clearly rejects HE40±/VHT40±, and the relevant tests pass.
Written by the indexing model from the issue text.
Description
Summary
The radio htmode allow-list accepts HE40+, HE40-, VHT40+, VHT40- and rejects HE40/VHT40. OpenWrt 24.10's mac80211.sh understands HE40/VHT40 (and HT40+/HT40-/HT40), not HE40±/VHT40±. As a result:
htmode = HE40is rejected (radio_args_invalid), and the radio keeps its previous settings.htmode = HE40+passes validation and is written to uci, but hostapd brings the radio up at 20 MHz, with no error anywhere.
So no HE/VHT radio can run at 40 MHz, and validation gives false confidence.
Where
src/services/hal/types/capability_args.lua:527(RADIO_VALID_HTMODES) and theRadioHtmodealias at:545.src/services/hal/drivers/radio.lua:16(VALID_HTMODES).
Evidence
bigbox-v1-cm-2, devicecode-lua v0.11.3, OpenWrt 24.10.7. Radio1 (5 GHz) on channel 100, 2026-10-20:
htmode = HE40: logread showsLOG wifi warn radio_args_invalid err=htmode must be one of: HE20, HE40+, HE40-, HE80, HE160, HT20, HT40+, HT40-, VHT20, VHT40+, VHT40-, VHT80, VHT160 method=set_channels. uci is unchanged.htmode = HE40+:uci show wireless.radio1hashtmode='HE40+';/var/run/hostapd-phy1.confhashe_oper_chwidth=0and no 40 MHzht_capab;- hostapd logs
DFS-CAC-START freq=5500 chan=100 sec_chan=0, width=0; iw devreportswidth: 20 MHz.
- On the box,
/lib/netifd/wireless/mac80211.shmatches htmode withcasepatterns such asHT40*|VHT40|VHT80|VHT160|HE40|HE80|HE160|EHT40|EHT80|EHT160(around lines 169, 246 and 749).HE40+doesn't match any of them. HE80works (verified).- VHT40± is inferred from the same script, not tested on hardware.
Impact
40 MHz operation isn't available for HE/VHT configs, and the fallback to 20 MHz is silent. That matters wherever 80 MHz is too wide, e.g. dense sites or DFS channels.
Suggested fix
- Accept
HE40andVHT40: OpenWrt chooses the secondary channel itself. - Either map
HE40±/VHT40±to those values, or reject them with a clear error. - Keep
HT40±. - Add validator tests.
Found while setting up the grand-pipeline Wi-Fi client test (jangala-dev/grand-pipeline#18).
- Dominant language
- Lua
- Stars
- 1
- Forks
- 0
- Avg merge
- 5d 15h
- Merged PRs (30d)
- 3
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from jangala-dev/devicecode-lua
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 8/100
jangala-dev/devicecode-lua#339 ·
-
wired: comma-separated VLAN lists cause false missing-VLAN alertsMay be free again @rslater-cs claimed this 43 days ago, and no pull request is open. Open
jangala-dev/devicecode-lua#333 · 2 assignees ·
-
Reduce network startup and reconnect delaysMay be free again @rslater-cs claimed this 43 days ago, and no pull request is open. Open
jangala-dev/devicecode-lua#332 · 2 assignees ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
jangala-dev/devicecode-lua#330 · 1 comment ·
-
Track functional differences from devicecode v0.9.x and devicecode-lua v0.10.6 to v0.11.2May be free again @rslater-cs claimed this 50 days ago, and no pull request is open. Open
jangala-dev/devicecode-lua#329 · 2 assignees ·
All issues in jangala-dev/devicecode-lua
Similar issues
-
enhancement severity: low
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
luainkernel/lunatik#2091 ·
Maintainers usually reply within 1 day
-
Wrong step: Ashenvale, Wetlands & Stonetalon Mountains, step 49Possibly taken @b7216309-jpg claimed this today. Openguide has-pr
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
fitzforge/polestar#699 · 2 comments ·
Maintainers usually reply within 1 day
-
Fails to load with Crushing Industry when its crushed ores are disabledPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
LuaLS/lua-language-server#3484 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
lewis6991/gitsigns.nvim#1593 ·