2010/03/15

Oleg: WL-520GU 刷 Oleg 韌體後時間不準變慢的問題

最近無意間發現,AP的時間好像有問題?本來不以為意,但因為有需要用到 cron 排程,時間必須準確。於是開始調查。網路上查一下終於得知了原因。

原因

WL-520GU 正確時脈是 200MHz (參照 Oleg 設備列表),但是 Oleg 韌體卻判斷成 240 MHz,導致整體時間變成 0.83倍。也就是說,60秒會慢10秒,累計起來一小時就慢了10分鐘了。除了不斷的以 NTP 時間自動校正以外,應該有根治的辦法。

相關討論

- WL-520GU 官網討論區 - WL-520gu的时钟问题
有人碰到一樣的問題,看來應該是機器本身的問題了。

- Mobile01 - 大大的滿足 : ASUS WL-520GU,支援多功能事務機無線分享的超值機種

Poulenc says:

哇!沒想到有人會討論WL-520GU
真是抱歉系統時間會延遲 〈(_ _)〉
已經盡快在修正這個問題
盡早釋出下一版本的FW!
請大家多多支持WL-520GU!

有產品的PM跳出來說,這是韌體問題,會於新版修正。但是Oleg版是用舊的韌體改的,怎麼辦呢?本著求知慾望,除了解決法外也想知道問題的癥結,於是繼續尋找。

- OpenWRT 的臭蟲回報區 - #4083 incorrect clock rate on ASUS WL-520gU

可得知BCM5354晶片預設時脈應該是240MHz,但是WL-520GU卻只能跑200MHz (故意降頻?),沒有調整過來的結果造成時間偏差。我們終於知道了問題的真正原因。

- DD-WRT 的討論區 - Clock Running Slow

在這篇討論中提到需要修改核心程式碼來達成修正,其中
/* 5354 could run both on 200 & 240 Mhz -- use nvram setting */
if (sb_chip(sbh) == BCM5354_CHIP_ID && nvram_match("clkfreq", "200"))
   hz = 200000000;
可以看到修正後的程式會從 nvram 判斷設定值,進而來修改成正確的時脈。幸運的,Lly 也把這個修正加進了 Patch 裡了 (見此)

解決方法

所以韌體應該是已經修正了,開啟修正的解決法應該就是執行: (Source: Последняя прошивка от Олега 1.9.2.7-10.7 俄國人 teddy_bear 提供的解法)
nvram set clkfreq=200
nvram commit
reboot

重新啟動 AP 後就可以了。我的情況是還需要拔插頭硬體重開機才可以,要看看是否成功可以下這個指令:
cat /proc/cpuinfo
顯示結果:
system type : Broadcom BCM5354 chip rev 3 pkg 0
processor : 0
cpu model : BCM3302 V2.9
BogoMIPS : 197.83
wait instruction : no
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : no
hardware watchpoint : no
ASEs implemented : mips16
VCED exceptions : not available
VCEI exceptions : not available
unaligned_instructions : 1
dcache hits : 0
dcache misses : 0
icache hits : 0
icache misses : 0
instructions : 0
BogoMIPS 值約 200 左右即成功了。

沒有留言:

張貼留言