LINUX.ORG.RU

ath10k + hostapd + 5ghz + linux 5.8 = fail

 , , , ,


1

2

Привет *,

Собсно есть у меня железяка PCEngines APU2 в которую воткнуто 2 двухдиапазонных адаптера Compex WLE600VX на базе ath10k - один дует на 2.4Ггц, второй - на 5Ггц. Стоит Убунта 20.04 и всё было хорошо.

Тут чёрт меня дёрнул обновиться на новый HWE - ядро 5.8 (было 5.4) - и вайфай пропал.

Оказалось что в EEPROM карт вбит по дефолту регион «мир» (0x63) и в 5.8, похоже, закрутили гайки и отметили все 5Ггц частоты в этом регионе как «no IR» т.е. AP на них делать теперь нельзя:

Frequencies:
                        * 5180 MHz [36] (23.0 dBm) (no IR)
                        * 5200 MHz [40] (23.0 dBm) (no IR)
                        * 5220 MHz [44] (23.0 dBm) (no IR)
                        * 5240 MHz [48] (23.0 dBm) (no IR)
                        * 5260 MHz [52] (23.0 dBm) (no IR, radar detection)
                        * 5280 MHz [56] (23.0 dBm) (no IR, radar detection)
                        * 5300 MHz [60] (23.0 dBm) (no IR, radar detection)
                        * 5320 MHz [64] (23.0 dBm) (no IR, radar detection)
                        * 5500 MHz [100] (disabled)
                        * 5520 MHz [104] (disabled)
                        * 5540 MHz [108] (disabled)
                        * 5560 MHz [112] (disabled)
                        * 5580 MHz [116] (disabled)
                        * 5600 MHz [120] (disabled)
                        * 5620 MHz [124] (disabled)
                        * 5640 MHz [128] (disabled)
                        * 5660 MHz [132] (disabled)
                        * 5680 MHz [136] (disabled)
                        * 5700 MHz [140] (disabled)
                        * 5720 MHz [144] (disabled)
                        * 5745 MHz [149] (30.0 dBm) (no IR)
                        * 5765 MHz [153] (30.0 dBm) (no IR)
                        * 5785 MHz [157] (30.0 dBm) (no IR)
                        * 5805 MHz [161] (30.0 dBm) (no IR)
                        * 5825 MHz [165] (30.0 dBm) (no IR)
                        * 5845 MHz [169] (disabled)
                        * 5865 MHz [173] (disabled)

В 5.4 по крайней мере часть каналов была доступна:

  Frequencies:
                        * 5180 MHz [36] (20.0 dBm)
                        * 5200 MHz [40] (20.0 dBm)
                        * 5220 MHz [44] (20.0 dBm)
                        * 5240 MHz [48] (20.0 dBm)
                        * 5260 MHz [52] (20.0 dBm) (no IR, radar detection)
                        * 5280 MHz [56] (20.0 dBm) (no IR, radar detection)
                        * 5300 MHz [60] (20.0 dBm) (no IR, radar detection)
                        * 5320 MHz [64] (20.0 dBm) (no IR, radar detection)
                        * 5500 MHz [100] (disabled)
                        * 5520 MHz [104] (disabled)
                        * 5540 MHz [108] (disabled)
                        * 5560 MHz [112] (disabled)
                        * 5580 MHz [116] (disabled)
                        * 5600 MHz [120] (disabled)
                        * 5620 MHz [124] (disabled)
                        * 5640 MHz [128] (disabled)
                        * 5660 MHz [132] (20.0 dBm) (no IR, radar detection)
                        * 5680 MHz [136] (20.0 dBm) (no IR, radar detection)
                        * 5700 MHz [140] (20.0 dBm) (no IR, radar detection)
                        * 5720 MHz [144] (20.0 dBm) (radar detection)
                        * 5745 MHz [149] (20.0 dBm)
                        * 5765 MHz [153] (20.0 dBm)
                        * 5785 MHz [157] (20.0 dBm)
                        * 5805 MHz [161] (20.0 dBm)
                        * 5825 MHz [165] (20.0 dBm)
                        * 5845 MHz [169] (disabled)
                        * 5865 MHz [173] (disabled)

Насколько я почитал гугл - из юзерспейса это не решается, загрузка новых regulatory domain (wireless-regdb + crda) только может еще больше гайки закрутить, а не открутить.

Как я понял - в том же OpenWRT патчат ядро чтобы это решить.

Пока я откатился на 5.4, но тренд какой-то хреновый. Может есть способ какой-то чтобы это решить не таща своё ядро? А то собирать лень каждый раз.

Насколько я почитал гугл - из юзерспейса это не решается, загрузка новых regulatory domain (wireless-regdb + crda) только может еще больше гайки закрутить, а не открутить.

Your regulatory domain doesn't seem to get updated and all 5GHz channels remain to be restricted by the (conservative) world regulatory which disallows initiating radiation (NO-IR).

Советую в первую очередь попробовать всё-таки настроить правильный регион.

token_polyak ()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Он настроен был изначально. Не влияет никак. Ограничения из userspace (через тот же iw reg set …) накладываются на ограничения ядра (которые основаны на region id из EEPROM), но не могут их отменить как я понял.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

но не могут их отменить как я понял.

С поста в списке рассылки следует обратное. К тому же, во всех нагугленых мною тредах с подобными проблемами - суть проблемы именно в том, что не настраивается регион.

token_polyak ()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Я это всё читал конечно, гуглить я умею. У него другая ошибка:

Channel list update timeout - try to continue anyway

У меня такого нет, CRDA/wireless-regdb есть и работает штатно. Но установка другого regulatory domain через iw reg set или через hostapd country_code=... не влияет на список частот в iw list и hostapd отказывается стартовать тоже.

Подробнее описано тут: https://github.com/twisteroidambassador/arch-linux-ath-user-regd

While a different regulatory domain can be imposed in software (for example by iw reg set US), the original restrictions will not be lifted, and both set of restrictions apply at the same time.
blind_oracle ★★★★★ ()
Последнее исправление: blind_oracle (всего исправлений: 1)
Ответ на: комментарий от blind_oracle

А что показывает iw reg get после настройки региона? Что в dmesg?

понакупывают всяких атеросов, нет бы по-божески интел использовать

token_polyak ()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от token_polyak

Показывает правильный регион, который я выставляю через iw reg set:

# iw reg get
global
country US: DFS-FCC
	(2400 - 2472 @ 40), (N/A, 30), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
	(5250 - 5350 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
	(5470 - 5730 @ 160), (N/A, 23), (0 ms), DFS
	(5730 - 5850 @ 80), (N/A, 30), (N/A)
	(57240 - 71000 @ 2160), (N/A, 40), (N/A)

phy#1
country US: DFS-FCC
	(2400 - 2472 @ 40), (N/A, 30), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
	(5250 - 5350 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
	(5470 - 5730 @ 160), (N/A, 23), (0 ms), DFS
	(5730 - 5850 @ 80), (N/A, 30), (N/A)
	(57240 - 71000 @ 2160), (N/A, 40), (N/A)

phy#0
country US: DFS-FCC
	(2400 - 2472 @ 40), (N/A, 30), (N/A)
	(5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
	(5250 - 5350 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
	(5470 - 5730 @ 160), (N/A, 23), (0 ms), DFS
	(5730 - 5850 @ 80), (N/A, 30), (N/A)
	(57240 - 71000 @ 2160), (N/A, 40), (N/A)

Но ни на что не влияет.

В dmesg ничего интересного.

blind_oracle ★★★★★ ()
Последнее исправление: blind_oracle (всего исправлений: 1)

Может есть способ какой-то чтобы это решить не таща своё ядро? А то собирать лень каждый раз.

это легко автоматизировать через DKMS. А вообще самый верный способ - пропатчить EEPROM, если возможно.

Lrrr ★★ ()
Ответ на: комментарий от Lrrr

это легко автоматизировать через DKMS

it seems DKMS does not really support patching and rebuilding an in-tree module.

Всё уже перепробовано тем, кто нарвался на эту проблему - жертв много.

token_polyak ()
Последнее исправление: token_polyak (всего исправлений: 1)
Ответ на: комментарий от Jopich1

Мне так удобнее, я там виртуалки небольшие кручу, еще всякое. OpenWRT у меня есть на роутерах и мне он не нравится. Апгрейды, даже минорные - боль.

Я в крайнем случае лучше бубунтовое ядро пропатчу.

blind_oracle ★★★★★ ()

Когда в конце лета придёт HWE 5.11, если они к тому времени не исправят ничего, то я со своим процессором Ryzen 5 PRO 4650G вообще и без видео могу остаться, а на 5.4, с этим процессором и новой материнкой на 550 чипсете, так не охота делать откат и будет столько лишних телодвижений. Не дай то Бог.

anonymous ()
Ответ на: комментарий от token_polyak

На самом деле стоит попробовать, мне кажется. Тот же OpenZFS, который уже в бубунте идёт в стоковом ядре, я собираю отдельно через DKMS и он успешно заменяет стоковый.

blind_oracle ★★★★★ ()
Ответ на: комментарий от Jopich1

Там выше blind_oracle давал ссылку на репу с патчами и PKGBUILDом для арча, т.к. нужных патчей в дефолтном арчевом ядре как раз нет.

token_polyak ()
Последнее исправление: token_polyak (всего исправлений: 1)

blind_oracle

Насколько я почитал гугл - из юзерспейса это не решается, загрузка новых regulatory domain (wireless-regdb + crda) только может еще больше гайки закрутить, а не открутить.

Все врут. Чуть подправить crda+wireless-regdb. Debian10, QCA9888

~# iw reg get 
global
country 98: DFS-UNSET
	(2400 - 2494 @ 40), (N/A, 20), (N/A)
	(5150 - 6150 @ 160), (N/A, 36), (N/A)

phy#0
country US: DFS-FCC
	(2400 - 2494 @ 40), (N/A, 30), (N/A)
	(5150 - 6150 @ 160), (N/A, 36), (N/A)

phy#1
country GB: DFS-ETSI
	(2400 - 2494 @ 40), (N/A, 20), (N/A)
	(5150 - 6150 @ 160), (N/A, 36), (N/A)

	Frequencies:
			* 5180 MHz [36] (36.0 dBm)
			* 5200 MHz [40] (36.0 dBm)
			* 5220 MHz [44] (36.0 dBm)
			* 5240 MHz [48] (36.0 dBm)
			* 5260 MHz [52] (36.0 dBm)
			* 5280 MHz [56] (36.0 dBm)
			* 5300 MHz [60] (36.0 dBm)
			* 5320 MHz [64] (36.0 dBm)
			* 5500 MHz [100] (36.0 dBm)
			* 5520 MHz [104] (36.0 dBm)
			* 5540 MHz [108] (36.0 dBm)
			* 5560 MHz [112] (36.0 dBm)
			* 5580 MHz [116] (36.0 dBm)
			* 5600 MHz [120] (36.0 dBm)
			* 5620 MHz [124] (36.0 dBm)
			* 5640 MHz [128] (36.0 dBm)
			* 5660 MHz [132] (36.0 dBm)
			* 5680 MHz [136] (36.0 dBm)
			* 5700 MHz [140] (36.0 dBm) 
			* 5720 MHz [144] (36.0 dBm)
			* 5745 MHz [149] (36.0 dBm)
			* 5765 MHz [153] (36.0 dBm)
			* 5785 MHz [157] (36.0 dBm)
			* 5805 MHz [161] (36.0 dBm)
			* 5825 MHz [165] (36.0 dBm)
			* 5845 MHz [169] (36.0 dBm)
			* 5865 MHz [173] (36.0 dBm)
jelt ()
Ответ на: комментарий от token_polyak

TheAnonymous Разумеется, нет: такая фигня может быть только с «блобовыми» Atheros'ами ath10k (которые уже Qualcomm на самом деле)

SakuraKun ★★★★★ ()
Последнее исправление: SakuraKun (всего исправлений: 2)
Ответ на: комментарий от SakuraKun

Ок, спасибо.
Ещё один вопрос, из ath9k обычно советуют AR9462 как самый мощный. Но ещё я смотрю есть AR9380 (из half mini pci-e), у него же тоже есть 5ГГц, но на 3 антенны, и скорость по идее до 450Мбит/с, а не 300, правда вроде нет BT. Собственно, если блютус ненужен, AR9380 лучше, или у AR9462 ещё какие-то преимущества?

TheAnonymous ★★★★★ ()
Ответ на: комментарий от jelt

А ядро какое? На 5.4 и у меня работает, а на 5.8 уже болт…

Ну и iw list покажи, а то в iw reg get у меня тоже всё хорошо, а в iw list хрен.

blind_oracle ★★★★★ ()
Последнее исправление: blind_oracle (всего исправлений: 1)
Ответ на: комментарий от TheAnonymous

AR9462 вышел на 15 месяцев позже чем AR9380 и в нём могут быть некоторые дополнительные улучшения. А так AR9380 тоже неплохой вариант, если роутер тянет. В моём случае один из немногих роутеров поддерживающих прошивку librecmc (на 100% опенсорсный OpenWRT без бинарных блобов) - TP-Link TL-WR841N(D) v9 - не поддерживает больше чем 300Мбит/сек, но провайдерные 100Мбит/сек вроде не режутся по скорости, поэтому не вижу смысла что-то менять.

SakuraKun ★★★★★ ()
Ответ на: комментарий от blind_oracle
apt-get install libnl-3-dev libnl-genl-3-dev libgcrypt11-dev python-m2crypto  libgcrypt20-dev pkg-config python-pip

Ставим недостающие модули python
pip install future
pip install attrs

wget https://www.kernel.org/pub/software/network/crda/crda-3.18.tar.gz
wget https://www.kernel.org/pub/software/network/wireless-regdb/wireless-regdb-2020.11.20.tar.gz  
tar -xvzf crda-3.18.tar.gz
tar -xvzf wireless-regdb-2020.11.20.tar.gz
cd /home/wireless-regdb-2020.11.20

nano db.txt
country 00: DFS-UNSET
	(2402 - 2494 @ 40), (20)
	(5150 - 6150 @ 160), (30)
	(57000 - 66000 @ 2160), (40)

country GB: DFS-ETSI
	(2402 - 2494 @ 40), (20)
	(5150 - 6150 @ 160), (30)
	(57000 - 66000 @ 2160), (40)

country RU: DFS-UNSET
	(2402 - 2494 @ 40), (20)
	(5150 - 6150 @ 160), (30)
	(57000 - 66000 @ 2160), (40)

country US: DFS-FCC
	(2400 - 2494 @ 40), (20)
	(5150 - 6150 @ 160), (30)
	(57240 - 71000 @ 2160), (40)

make
make install 


Переносим ключи

cp -v *.key.pub.pem /home/crda-3.18/pubkeys/

cd /home/crda-3.18
nano Makefile
@29
-CFLAGS += -std=gnu99 -Wall -Werror -pedantic
+CFLAGS += -std=gnu99 -Wall -pedantic

make

Если возникает ошибка ".//libreg.so: file not recognized: формат файла не распознан" удаляем "libreg.so"

make install

Проверяем
regdbdump /usr/lib/crda/regulatory.bin

"Заморозим" пакеты
jelt ()
Ответ на: комментарий от jelt

Родной, я знаю как CRDA редактировать. Я спросил какое ядро и что в iw list. Потому что в новых ядрах CRDA то загружается, но не заменяет собой ограничения в ядре и дровах, а накладывается на них.

blind_oracle ★★★★★ ()