Temat: WNDR4300 - obecność radio1 za każdym razem po aktualizacji - jak ?
(...)
5G radioSometimes the 5G wifi interface (a separate AR9580 chip attached on PCIe) will completely disappear, because the PCIE_RC strap bit gets stuck at '0'. This can be checked by running "devmem 0x180600b0" and looking at bit 6:
GOOD: 0x002F055A
BAD: 0x002F051AOn OpenWRT this causes the kernel to completely ignore the PCIe interface and everything attached to it, so only the onchip 2.4GHz radio will work. On the original firmware it may cause the unit to get stuck in a reboot loop.
If this happens, just power the unit off for about 30 seconds. In fact it might be a good idea to power cycle the unit before OpenWRT's initial boot. See this thread for more information.
(...)
Jak wiadomo w tym sprzęciorku po zaktualizowaniu firmware z oryginalnego do openwrt, czy nawet z openwrt do nowszej/innej wersji openwrt (tylko gdy nie zachowujemy ustawień - z zachowaniem działa od strzału) radio 5 GHz zachowuje się identycznie - zawsze nie działa przy pierwszym starcie - opis objawów i sposobu na odblokowanie go powyżej w cytacie z wiki oraz potwierdzone w praktyce przeze mnie (trzeba po prostu wyłączyć od razu po pierwszym starcie po aktualizacji i odczekać te kilkanaście sekund, po czym włączyć i radio 5 GHz jest już dostępne). Przy oryginalnym firmware zresztą jest to samo - objawia się to wieloma restartami routera po pierwszym włączeniu gołego firmware, aż te radio w końcu zaskoczy.
Teraz pytanie - jak osiągnąć aby za każdym restartem po aktualizacji od razu działało ?
Z powyższego opisu wynika, że jest podobno sposób aby to osiągnąć (odnośnik w powyższym cytacie prowadzący do tematu na forum openwrt) ale nie wiem jak to zastosować w praktyce - z tego co zrozumiałem trzeba każdorazowo ten jeden raz po restarcie zastosować jakiś automat by startował z 30 sekundowym opóźnieniem.
Teraz kwestia już wspominana - jak to osiągnąć ?
Czy nie można tego jakoś dodać do /etc/uci-defaults aby po pierwszym właśnie starcie wykonywał coś w ten deseń (wzorowałem się na /etc/uci-defaults/02-networks):
#!/bin/sh
[ -e /etc/config/wireless ] && exit 0
CZYTAM_PAMIEC=`devmem 0x180600b0`
case "$CZYTAM_PAMIEC" in
"0x002F055A") echo "radio1 jest ok" ;;
"0x002F051A") echo "radio1 jest nieobecne - wykonuje reboot" && reboot ;;
*) echo "nie wykonano skryptu"
esac
uci commit wireless
exit 0
Oczywiście składnia jest zapewne niepoprawna, ale chodzi o samą ideę działania.
Jak widać nie jest tam uwzględniony np. sleep=10 bo...no właśnie - jak opóźnić boot ???
Druga kwestia - czy opóźnienie boot ma sens ? - wszak w końcu jest uruchomiona wtedy część płyty głównej i pcie jest i tak wtedy zasilany, więc tak, czy siak, procek mapuje to złącze i odpowiednie wyniki przekazuje w dalszej części bootowania do sterowników...