WiFi channel 13 not detected


#1

My 802.11g WiFi router/modem uses channel 13 but Manjaro ARM KDE on my Raspberry Pi 3B sees only lower channels.

Based in the UK I have set the timezone to Europe/London and tried sudo iw reg set UK and also GB and EU but to no avail as sudo iw reg get still shows global country 00:... and does not see my local WiFi.

I am struggling to find a solution to this. My other Raspberry Pi runs Raspbian and works fine with channel 13.
Is there a correct way to enable channel 13 detection on Manjaro ARM?
What else might I try or set?

Thanks.


#2

It may be hard-coded into the eeprom and may not be so easy to switch.


#3

According to the raspberry pi forum, it should be doable with raspi-config command.
A package named raspi-config is in the AUR. You can try that. :slight_smile:


#4

Thanks.
That seemed like a good suggestion, but having installed raspi-config I discovered the AUR version (r2.aa2dfd1-1) available for Manjaro ARM does not include any Localisation Options including that to change the WiFi Country , so unfortunately I am back to my original questions on to enable channel 13 detection?


#5

Hm. I don’t know.

Manjaro ARM does not prevent anything in that regard.

Is the problem also present on Arch Linux ARM?


#6

Sorry I think I should have said the ‘AUR version available for Manjaro ARM’, I’ll edit my post to reflect that.


#7

But the AUR version is also available in Arch Linux ARM. It’s actually made for that.

So if it has the same issue on Arch, then it’s an AUR package problem.


#8

Does the regulations on wifi channels allow channel 13 in your country?

Install the packages crda and wireless-regdb

Set a COUNTRY environment variable according to your country e.g. for UK

export COUNTRY=uk

And then run

crda

more info

man crda

#9

Installing the packages crda and wireless-regdb have resulted in partial progress in that iw reg set GB now does set the country to GB but export COUNTRY=GB then

$ crda
Failed to set regulatory domain: -28

and Network Manager still does not detect channel 13.

I also tried enabling WIRELESS_REGDOM="GB" in /etc/conf.d/wireless-regdom and creating the file /etc/wpa_supplicant/wpa_supplicant.conf containing only the line country=GB, but neither have helped.


#10

This is indeed a mystery.

I have looked into the database and you are doing it correct exporting COUNTRY=GB.

I have not tried manjaro on my arm devices but I have a 3B and out of curiosity I will try the manjaro spin on it.

It could theoretically be a KDE issue. Have you tried the lxqt or the minimal to check if it is the same with them?


#11

If the chip does not support that channel it is difficult to have it changed. If it’s hard coded into the eeprom it’s hard to change it.

At least that is my experience on KDE…


#12

I may be misunderstanding but I have an identical Raspberry Pi 3B running Raspbian and that does work with channel 13. That implies to me that the problem is software not hardware.


#13

At the time I had LXQT and Minimal editions installed I did not test the WiFi, but it is possible I could test them again, though not immediately.

I may try the other approach to solving a problem and that is to put it aside for a while until further inspiration and knowledge come along (I need a few days to do other things anyway). I can temporarily use a wired connection to the Raspberry Pi (or alternatively use a lower WiFi channel, but I’d rather avoid that option).


#14

Yes, but perhaps you received a board with a different regulatory domain programmed into the hardware. You can try flashing the eeprom if that is the case. Unfortunately, that is complicated and rarely successful from what I’ve read.

Here is further info:

Setting your regulatory domain country code.

Check your regulatory domain (00 returned is unset):

sudo iw reg get

or

sudo crda

Make sure the “crda” and “wireless-regdb” packages are installed.

Uncomment “your” correct country code in /etc/conf.d/wireless-regdom ,save as root, then reboot.

Example below: Canada enabled as the Regulatory Domain in /etc/conf.d/wireless-regdom

WIRELESS_REGDOM="CA"

Set your regulatory domain with this command:

sudo iw reg set CA

Substitute your country code for “CA” in the above command.

Source for Regulatory Domain Country Codes - Wikipedia

If the regulatory domain still refuses to be set try this:

sudo echo "options cfg80211 ieee80211_regdom=CA" | sudo tee /etc/modprobe.d/cfg80211.conf

Substitute your country code for “CA” in the above command.

You can check with:

sudo cat /sys/module/cfg80211/parameters/ieee80211_regdom

Reboot.

Some AP’s reject connections coming from devices using the wrong regulatory domain.

You may need to properly configure your regulatory domain to get a connection.

I even went so far as to create a SystemD service to load the country code at start up.

This service will set your country (using iw reg set) before network is brought up:

You’ll need to create the systemd service file:

/etc/systemd/system/set_crda_country.service
#Set CRDA country code during boot.
[Unit]
Description=Sets country for CRDA
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/sbin/iw reg set CA
StandardOutput=tty

[Install]
WantedBy=network-pre.target
sudo chmod +x /etc/systemd/system/set_crda_country.service

sudo systemctl enable set_crda_country.service

sudo systemctl start set_crda_country.service

sudo systemctl status set_crda_country.service

sudo systemctl daemon-reload

Reboot.

You should see your country code now being used after restarting. This properly loads the country code at boot, but unfortunately it made no difference in my case. Feel free to try this method. Who knows, perhaps it will work for you.