Fix for Linksys EA3500 with OpenWRT 2.4GHz Wifi not working
tl;dr:
In /etc/config/wireless
, under the config wifi-device 'radio0'
section, change the option hw_mode '11a'
line to option hw_mode '11g'
and restart. See the bottom of this post for an example.
Here is my thread on the OpenWRT forums.
I recently installed OpenWRT firmware on my Linksys EA3500 router so I could send WOL (Wake-on-LAN) packets to my PC to turn it on from outside of my local network. Everything worked great except for the 2.4GHz WiFi (radio0).
I looked through the system logs and found this:
# logread | grep radio0
...
radio0 (2030): Hardware does not support configured mode
radio0 (2030): wlan0: IEEE 802.11 Hardware does not support configured mode (2) (hw_mode in hostapd.conf)
radio0 (2030): Could not select hw_mode and channel. (-2)
...
The referenced hostapd.conf
is actually /var/run/hostapd-phy0.conf
which is automatically generated from /etc/config/wireless
. If we look in /etc/config/wireless
we see this configuration for radio0:
# cat /etc/config/wireless
config wifi-device 'radio0'
option type 'mac80211'
option path 'mbus/mbus:pcie-controller/pci0000:00/0000:00:01.0/0000:01:00.0'
option hwmode '11a'
option channel 'auto'
...
"IEEE 802.11 Hardware does not support configured mode (2) (hw_mode"
This error tells us that the WiFi device's wireless protocol (hw_mode
/hwmode
) has been improperly configured. As you can see from the configuration above, by default radio0 is incorrectly configured as a 5GHz radio with the 802.11a/n protocol (11a
). To fix this we need to change the value to 11g
to correctly configure the radio to use the 802.11b/g/n 2.4GHz protocol.
Specifically, we need to change the option hw_mode '11a'
line to option hw_mode '11g'
in /etc/config/wireless
like so:
config wifi-device 'radio0'
option type 'mac80211'
option path 'mbus/mbus:pcie-controller/pci0000:00/0000:00:01.0/0000:01:00.0'
option hwmode '11g'
option channel 'auto'
Restart the router to cause /var/run/hostapd-phy0.conf
to be regenerated from your new /etc/config/wireless
.