2

Мой графический интерфейс openwrt показывает все сети 5 ГГц как отключенные. (Красный кружок с косой чертой и "Беспроводная связь отключена или не связана"). Также на моих компьютерах не отображается беспроводная сеть 5 ГГц.

В недавнем прошлом у меня работала 5 ГГц, но сейчас, похоже, это не так. У меня сейчас

  • Netgear WNDR3800
  • OpenWRT стабильный - 15.05 Chaos Calmer. (Пока не 15.05.1. Я запустил некоторое opkg update несколько месяцев назад, так что оно может быть немного промежуточным).

Моя конфигурация в основном имитирует CeroWRT (проект форка, разработанный на платформе wndr3800). В частности:

  • sqm-scripts для исправления задержки при загрузке ("kill bufferbloat").
  • Отдельные сети для "гостя" и меня, которые маршрутизируются, а не соединяются с локальной сетью.
  • Отдельные сети для 2,4 ГГц и 5 ГГц. (На самом деле я бы предпочел плавный роуминг, как было предложено в недавней презентации Googly (TM) ; просто он не всегда был на 100% надежным для меня, и я в итоге хотел использовать 2,4 ГГц).

Я заметил следующее в системном журнале роутера:

Sun Apr  3 15:02:19 2016 user.notice SQM: Starting simple.qos
Sun Apr  3 15:02:19 2016 user.notice SQM: ifb associated with interface pppoe-wan: 
Sun Apr  3 15:02:19 2016 user.notice SQM: Currently no ifb is associated with pppoe-wan, this is normal during starting of the sqm system.
Sun Apr  3 15:02:19 2016 daemon.notice netifd: radio1 (9031): wlan1: ACS-COMPLETED freq=5320 channel=64
Sun Apr  3 15:02:19 2016 daemon.notice netifd: radio1 (9031): Using interface wlan1 with hwaddr 74:44:01:86:42:d6 and ssid "VOYAGER2091-90-jenkins"
Sun Apr  3 15:02:20 2016 user.notice SQM: Squashing differentiated services code points (DSCP) from ingress.
Sun Apr  3 15:02:21 2016 kern.info kernel: [  199.510000] IPv6: ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): Could not set interface wlan1-1 flags (UP): Device or resource busy
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): Failed to add BSS (BSSID=76:44:01:86:42:d6)
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): Interface initialization failed
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): wlan1: interface state ACS->DISABLED
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): wlan1: AP-DISABLED 
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): ACS: Possibly channel configuration is invalid, please report this along with your config file.
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): ACS: Failed to start
Sun Apr  3 15:02:21 2016 daemon.notice netifd: radio1 (9031): wlan1: AP-DISABLED

Запуск /etc/init.d/network restart на маршрутизаторе не помогает.

Запуск ifdown wifi_a_guest а затем ifup wifi_a_guest похоже, исправит все до следующей перезагрузки.

1 ответ1

1

Последние два предложения являются ключевыми. Похоже, что в OpenWRT есть состояние гонки, которое вызывается моей конкретной конфигурацией, как описано выше.

miniupnpd кажется, тоже является частью этого. После отключения его (из - за запутанную logspam), я обнаружил , что /etc/init.d/network restart получал 5 ГГц работает. Это был следующий ключ.

Отключение sqm разрешило 5GHz проблемы навсегда. Конечно, я хотел бы найти способ, чтобы sqm работал :). Я знаю, что у sqm довольно медленный сценарий (он может занять несколько секунд), который запускается при включении сетевого интерфейса.

Поскольку sqm не настроен на работу с беспроводными интерфейсами, я склонен винить в том, что в доморощенном netifd OpenWRT виноваты условия гонки . Фактически я смог воспроизвести ошибку даже после замены реализации sqm на занятый цикл. (Не задержка - sleep 3 не воспроизвел сбой). В /usr/lib/sqm/run.sh:

run_sqm_scripts() {
    local section="$1"
    export IFACE=$(config_get "$section" interface)

    [ -z "$RUN_IFACE" -o "$RUN_IFACE" = "$IFACE" ] || return

    # XXX test hack
    if [ "$RUN_IFACE" = "$IFACE" ]; then
      let i=0
      while [[ $i -le 20000 ]]; do
        let i++
      done
    fi
    return
    # XXX end test hack

    [ $(config_get "$section" enabled) -ne 1 ] && ACTION=stop

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .