nvram.init 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/sh /etc/rc.common
  2. # NVRAM setup
  3. #
  4. # This file handles the NVRAM quirks of various hardware.
  5. START=02
  6. alias debug=${DEBUG:-:}
  7. nvram_default() {
  8. [ -z "$(nvram get $1)" ] && nvram set "$1=$2"
  9. }
  10. nvram_set() { # for the linksys fixup part
  11. [ "$(nvram get "$1")" = "$2" -a "$2" != "" ] || {
  12. COMMIT=1
  13. /usr/sbin/nvram set "$1=$2"
  14. }
  15. }
  16. fixup_linksys() {
  17. # work around braindead CFE defaults in linksys routers
  18. boardtype=$(nvram get boardtype)
  19. boardnum=$(nvram get boardnum)
  20. boardflags=$(($(nvram get boardflags)))
  21. adm_switch="$(( ($boardflags & 0x80) >> 7 ))"
  22. [ -n "$(nvram get vxkilled)" ] && boardtype=0 # don't mess with the ram settings on the hacked cfe
  23. case "$(( $boardtype ))" in
  24. "1800") #0x708
  25. if [ "$adm_switch" = 0 ]; then
  26. nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
  27. [ "$COMMIT" = 1 ] && {
  28. nvram_set clkfreq 216
  29. nvram_set sdram_ncdl 0x0
  30. nvram_set pa0itssit 62
  31. nvram_set pa0b0 0x15eb
  32. nvram_set pa0b1 0xfa82
  33. nvram_set pa0b2 0xfe66
  34. nvram_set pa0maxpwr 0x4e
  35. }
  36. fi
  37. ;;
  38. "1127") #0x467
  39. nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0100 )))"
  40. [ "$COMMIT" = 1 ] && {
  41. nvram_set sdram_ncdl 0x0
  42. nvram_set pa0itssit 62
  43. nvram_set pa0b0 0x168b
  44. nvram_set pa0b1 0xfabf
  45. nvram_set pa0b2 0xfeaf
  46. nvram_set pa0maxpwr 0x4e
  47. }
  48. ;;
  49. "1071") #0x042f
  50. nvram_set sdram_init "$(printf 0x%04x $(( $(/usr/sbin/nvram get sdram_init) | 0x0009 )))"
  51. [ "$COMMIT" = 1 ] && {
  52. nvram_set sdram_ncdl 0x0
  53. }
  54. esac
  55. }
  56. start() {
  57. # Don't do any fixups on the WGT634U
  58. [ "$(cat /proc/diag/model)" = "Netgear WGT634U" ] && return
  59. fixup_linksys
  60. # OFDM Power Offset is set incorrectly on many boards.
  61. # Setting it to 0 will increase the tx power to normal levels.
  62. nvram_set opo 0x0
  63. [ "$(nvram get il0macaddr)" = "00:90:4c:5f:00:2a" ] && {
  64. # if default wifi mac, set two higher than the lan mac
  65. nvram set il0macaddr=$(nvram get et0macaddr|
  66. awk '{OFS=FS=":";for(x=7,y=2;--x;){$x=sprintf("%02x",(y+="0x"$x)%256);y/=256}print}')
  67. }
  68. [ "$COMMIT" = "1" ] && nvram commit
  69. }