2009-03-08

起死回生的 LinkStation (via JTAG)

話說之前買了個 1TB 的 WD 硬碟,加上請人代購的 SATA 套件,目的就是為了讓我的 NAS - LinkStation 能夠上更大的容量,經過幾次測試發現沒問題後,打算重灌、讓我新的 1TB 硬碟走馬上任,無奈手賤,看到網路上有提到一個超棒神奇的 ROM:U-boot(LinkStation 的 Firmware 是放在硬碟上,而 ROM 裡面有基本的 Boot Loader,即便硬碟壞了也可以透過 ROM 開機來修復重灌,這個 U-boot 的作用就是提昇原廠 ROM 的功能),可以塞到原廠 ROM 的前面當 Boot Loader、讓使用者能靠按電源鍵來決定哪個開機區(不用再手動 swaphd),也可以在重刷的過程一併將原廠的 ROM 換成有 Telnet 功能的方便維修。抱著戒慎恐懼的心態想來試刷看看,沒想到才跑第一個步驟,馬上出現我看不懂的錯誤訊息,關機重開後,機器就送給我最害怕的 Diag 燈連閃五下:Flash memory error (不同閃燈數量代表的意義可以參考這篇文章)!死了!ROM 刷壞哩(明明就連第一個步驟都還沒開始哩,它告訴我空間不足啊),這個可不是我能解決的狀況啊!一失足成千古恨,難道我服役兩年半 NAS 從此就變成磚塊 (Brick,這個字現在已經也可以做「動詞」了),之前買來升級的套件和硬碟都用不著了嗎?

訪查網路的文章,據說這個情況發生,除了送回原廠(但早就過保固啦),唯一的手段就是上 JTAG (Joint Test Action Group)。透過在電路板上焊幾隻針腳做一個連接埠,用這個連接埠與電腦連線,藉由和晶片的直接溝通 (Daisy Chain),就可以進行電路除錯、訊號資料傳送和維修的動作。以上都是從維基百科上查來的,我只是個小文組,電工的知識一點都沒有,這輩子也沒用過電烙鐵,就算以上動作再簡單,對我來說都是難如登天(更何況,並沒有那麼簡單),還好在網路上找到有維修 LinkStation 的賣家(翔工坊),不只是單純幫忙改機,連搞 JTAG 都有經驗,我二話不說就快遞機器給他處理了!

根據賣家告知的流程,基本上就是先在板子上焊一組 2x8 的針腳頭,當作 JTAG Port,然後做一張 JTAG 的 Cable(用來把針腳轉 Printer Port,裡面還有塊電路板),透過這條線連接機板和電腦,以及 JTAG Software,就可以下命令送資料進 ROM 裡重刷資料(用講的比較簡單)!以下整理搞 JTAG 的步驟以及相關的資料,如果有錯可以糾正我,但有細節問題要問我就沒法回答啦(因為沒親手做過):

步驟一:先焊上 JTAG Port (照片是我被焊過的機板,正面和反面)

請參考這兩篇:Install a JTAG Port, Add Jtag Port,主要是交待每個針腳的意義。

步驟二:自己做一塊 JTAG,像下面這樣的東西:

參考這一篇文章:Building a JTAG Interface ,或是參考上面那篇,去買一條現成的 Cable,像這樣:

步驟三:連接電腦和機板(電腦還要有 Printer Port,或透過轉接),透過 JTAG Software (Openwince),準備對應的 u-boot.bin (如果要上 U-boot 的話)和 Firmimg.bin(Linux Initrds, 原廠 ROM 含 Telent 的,3 MB),以及相關命令,開始刷(據說要很久)!
參考這一篇文章:Building and using Openwince's JTAG Tools

步驟四:刷完重開測試。如果有裝 U-boot,可以用 Net Cat 監看開機過程。
參考文章:NetCat-A UBoot-Friendly Network Utility

幫我維修的賣家直接幫我先上 U-boot,然後再刷上原廠內含 Telnet 的 ROM (firmimg.bin),哇!這就是原先我手賤想要「升級」的狀態啊!東西塞進 ROM 後,除非硬體故障、或哪天又手賤去動 ROM(我不敢了),基本上這樣的 LinkStation 就所向無敵啦!想要從那個分割區開機,只要搭配 Power 鍵按幾下就行,如果想用新硬碟、或是不小心硬碟掛了,隨時都可以進到 EM (Emergency Mode) ,看是要重灌原廠韌體(從新分割區做起)、還是要 Telnet 進 EM 模式檢查和維修,這樣再也不用擔心要拆機器或搞壞啦!(希望自己和大家都不需要用到這篇筆記的動作....)

回應: 28

通達人 提到...

真強!我也希望有一個LinkStation啊!

匿名 提到...

我的Linkstation 今天才送修回來..
(所以,回站上來查資料)

話說, 我的改機是參考Abin大的文章做的
前幾天,手癢,又拆開來要換一顆HD,一個我做了不下50次的動作
結果,竟然被電到,還出火花..
心想一定死定了..果然!

我的 Linkstation 已拆,也過了幾年了..當然過保
查了網路也沒人修,只好打去 Bufflo

結果,他們收件吔...
而且3天修好....收費2000+去程運費+回件(我自己出)=2300
保固3個月

anyway,只是覺得好巧
我的機器也壞了,然後告知..原廠還是會修喔

Abin 提到...

哇!還要花 $2300 啊~好像好貴哩!
我買這台機器也只花五千多耶~ (HG160GB)

匿名 提到...

剛剛查了Yahoo拍, 真的找不到 Linkstaion, 所以花2000值得
但是, 看到一堆 PCI NAS-01g,只要2400左右
就這個觀點來看, 花2300去修,就有點不值得了

另外,請問一下用 uTorrent會不會比mldonkey好? 因為Mobile01的NAS-01g都是用uTorrent
不知有無研究? Thanks.

Abin 提到...

我沒用過 uTorrent,不知道誰好誰不好。我只知道 mldonkey 支援文字模式 (telent 控制)、也支援 BT & emule,因為我沒在用 BT,emule 試過倒是還不錯。

匿名 提到...

實際刷過就知道有多久了XDDDDDDDDD
一個binary接一個binary的傳資料,光是等待就夠折騰人了
說真的也是自己的HD-HG不小心搞掛了加上過保固才會研究怎麼用JTAG修
花了一個月才完成Orz

bt我推薦 rtorrent 配合wtorrent的web介面
ed推薦amule(本身就有web介面),有積分功能,可以跟emule的積分檔互通
mldonkey我也推,畢竟整合了bt+ed還有http與ftp等等,缺點就是ed部分沒有積分功能
如果不重視"積分"+"高速好友分享"的話,mldonkey是很棒的選擇XDDDD

附帶一提,Debian etch已經確定成為stable版本了^^
新的測試版為 squeeze
如果有興趣的話可以做dist-upgrade喔

PS: utorrent是windows下的吧@@??Debian只有rtorrent XDDDD

匿名 提到...

忘記說了,mldonkey也有可用的GUI介面
叫做 sancho
http://sancho-gui.sourceforge.net/

只要在windows裝好sancho後
設定一下連接Linkstation的資料
就可以連線到LS上的mldonkey囉!!

匿名 提到...

最近又重新刷韌體,還按照您兩年前的筆記裝Debian,
但SSH卻無法連線登入,感覺都不一樣了,連ssh Apache,samba
都裝不起來,是kernel 的問題嗎???需要升級成kernel 2.6嗎,
您這次換硬碟後是如何克服呢???

PS.好後悔最後一次改機成功沒有備份,現在好少人玩這台改機了

Abin 提到...

我並沒有碰到什麼裝不起來的問題耶,不過因為我換過 Kernel,有可能是這個問題。網路上散布的新 package 似乎都和當年我裝的版本不一樣,特別有感覺的是對 UTF-8 的支援,像 samba 要搞定中文好像很複雜,但這次一裝就成功。
我最近也會更新自己的 Blog 文章,修正部份最新改機的步驟,有興趣可以再參考看看。(可以注意文章末的最後更新時間,看看該篇文章我更新了沒)

匿名 提到...

一點小經驗分享一下,請檢查一下 debian sources,兩年前的stable現在都phase out了,要找一下正確的sources才行

匿名 提到...

Abin大,
請問你知道為什麼會刷失敗嗎?
最近一直心癢想要上U-BOOT,可是卻又很害怕失敗。
查過我的HG250 Flash型號是驗證過的 M290W324DB (參考:http://buffalo.nas-central.org/index.php/U-boot_bootloader),還是會害怕。
所以想問一下失敗的可能原因是什麼。

Abin 提到...

我沒辦法回答你這個問題,因為,我也經過該網頁驗證過,但一執行 u-boot 改機第一個步驟就失敗了,它回應的錯誤是「空間不足」,事後我也沒發現網路上有和我類似的狀況,我並不知道哪做錯了,而下場就是:失敗改壞變磚塊。
事後是找別人幫忙我用 JTAG 修復,並在修復過程幫我上 u-boot。因此如果你很害怕失敗,那麼可能在開始前,就要做好最壞的打算,畢竟,我自己刷 u-boot 也沒成功過。

匿名 提到...

請問一下針腳頭哪邊可以買呢?
謝謝

Abin 提到...

電子材料行都有賣。(不過我沒做過,專有名詞是啥我不知道)

匿名 提到...

我刷成功了~ya
不過,我是先load RAM版,再用RAM版run upgrade的
急救的firmimg.bin也刷成功,也是在u-boot下刷的
因為在linux下刷的做法眾說紛云,莫衷一是:有人說要在原廠的環璄下做,有人說是要在debian下,也有人說是在2.6(?)下,更多的教學說明是沒說清楚要在那個環境下去刷;更有mtd 及mtdblock的不同做法,更不要提有dd及cat的不同做法了。仔細研究了一下,還是用試RAM build來試,過程有一點驚險,不過還是成功了。
(不過,在nas forum有一篇說到一定要在原廠2.4.20下,因為2.6的kernel沒有flash driver,
是我看到比較可信的說法之一)

匿名 提到...

要在2.4.20下刷,絕對可以成功XD
的確是眾說紛紜啦,現在我改機也是遇到phase out問題
ssh必須要用kernel2.6才能裝(因為相依libc6)
而用以往的webinstall.sh已經沒轍了~(module-init-tools相依問題)
現在就只能多考據再靠點運氣改機囉~XD

Abin 提到...

我自己沒刷 u-boot 成功,所以沒法參與 XD。不過根據後面說的,看來 2.6 已經是一定要上的了,因為不只是 webinstall、ssh,好多基本套件都一定需要 2.6 kernel (的 library)才能夠安裝和執行,不過這些新舊版問題實在是很頭大,原來的韌體就 2.4、distribution 的套件又都 2.6,升級和安裝前的確要先搞清楚環境再下手。

匿名 提到...

其實,如果不是要個各軟體最新的版本
裝個2.4 stable的版本,有BT,FTP.WWW,應該就可以了
但是都找不到做好的image

Abin 提到...

以我之前做 2.4 的經驗,如果不上新版,很多軟體都有問題。像 mldonkey (+BT),要最新版才能解決中文和 UTF 及單檔 4GB 的問題,FTP & WWW 還好(但我 2.4 的 Apache2 很不穩容易死),Samba (網路芳鄰) 也有中文支援的問題,最嚴重的是現在連 SSH 也沒法安裝了。
但現在上到 2.6,以上現象下載安裝新版都自動迎刃而解,又快又穩。之前在 Kurobox/LinkStation 資訊討論區(目前網站維修中)站長有熱心做一個 image、裡面連 mldonkey 等軟體都上好了,不過我沒勇氣用,現在也年久失修,有問題也沒法維護了。
結論還是,既然要改機,還是自己動手做吧!不要再找什麼做好的 image,這種東西裝得起來算是運氣好,裝不起來有問題的話也很難維修處理。

匿名 提到...

我想信我是刷 u-boot 成功了, 但不知為可在 Boot 機時用 Power switch 只能 boot 到原廠狀况(用 mode#1 或 mode#2) 或 EM mode (mode#3)就是不能 Boot 進加裝的 Debian 裹, 究境同用 swaphd 轉換 system 的裝法有那裏不同? 之前有網友提及 " 急救的firmimg.bin " 有什麼不同, 我用的是從 hg-openlink-051b 那裏所取得有雖要換另一版本嗎?

Abin 提到...

如果你裝了 u-boot,「千萬不能」再用 swaphd 來切換,因為 u-boot 就是在做 swaphd 的事情,一起跑的話一定會有問題的。swaphd 的原理就是切換開機分割區,所以執行後要重新開機才能從對的地方開機。而 u-boot 原理像在一開始 BIOS 的時候就決定開機分割區,所以用 reset 鍵按完以後,開完就是正確的分割區了。u-boot 預設不按的話,就會進到 Debian 所在的分割區 (hda3),先確定你 u-boot 真的有成功、debian 真的在 hda3,再不然用 nc 來監看 u-boot 的開機過程,就知道對不對了(如果你真的有刷 u-boot 成功,nc 應該會用吧)。
原廠韌體有兩部份,一塊在 ROM 裡、一塊在硬碟裡,即使買新硬碟、硬碟是空的,一樣可以用 ROM 的韌體恢復硬碟裡的那一塊。急救用的 firmimg.bin 是要載到 ROM 裡面的那一塊,沒錯的話還多開了 Telnet port,而 hg-openlink-051b 是修改過、載在「硬碟」裡的,這兩塊作用和內容是很不一樣的(雖然都叫原廠韌體)。
最後,你的錯別字太多,看你的問題還要用上下文去猜意思,po 文前可以再多檢查一下吧~

匿名 提到...

小弟自小由香港移民外國, 只有小學程度言語文法不通之處還請見諒. 刷u-boot 相信是成功的,因為我可以由Power 的按鍵控制切換 Kernel 2.4, Kernel 2.6 及 EM Mode, nc 是試過但顯示 HD-HGLAND3E [192.168.1.100] 6666 (?) open 後就再沒有下文, 至於硬碟我是由 window 下移除所有區塊接回 Linkstation 後用 u-boot 按 power 鍵三次進入 EM Mode 而灌上 hg-openlink-051b 再升級至 0.73b v7 及 Kernel 2.6 之後再加裝 debian 過程還算順利就是不能 boot 進 debian.

Abin 提到...

假設你可以正常從 EM mode 開機、也可以從原來的 hda1 開機,你的狀況是要從 hda3 開機卻停住開不了,還是照樣開機但仍然用 hda1?
這樣說吧,你用 hda1 開機後,要上 kernel 2.6 的 patch (但不一定要切換),上完之後去灌 debian、最後要將 /boot/ 下的檔案都複製到 hda3 的分割區內,debian 才能受 u-boot 切換順利開機,請參考我更新過的 debian 文章,特別注意 u-boot 那一塊。
此外,不管你用哪一個模式進入,開機前後 u-boot 一定都會提示你選擇的模式、還有進行的過程(選定好後才會「沒有下文」),這是用來找錯誤很重要的訊息來源,它會告訴你到底是用哪一個分割區和 kernel 開機的,如果都沒相關訊息,光這邊猜測也很難判斷倒底錯誤的原因是什麼。

匿名 提到...

請問我刷了u-boot,可是沒把原廠韌體刷進去,現在硬碟檔案毀掉(裡面東西都沒了),開機到u-boot閃完就停掉了,要怎麼救勒?目前唯一能用的就是nc去監控

Abin 提到...

「刷了u-boot, 可是沒把原廠韌體刷進去」,看來你沒有 EM 模式了。但因為預設 u-boot 會從第三個分割區開機,所以照理說如果你的 hda3 裡面有可開機的、調整過 u-boot 的 debian,u-boot 刷正確的話會從 hda3 開機才是。
不過我想正本清源的作法還是要把原廠韌體給刷進去才是。既然不能開機,原廠韌體現階段只能夠靠 JTAG 用電腦送進 LinkStation 裡面,看你要自己焊、還是找人家修復了。

匿名 提到...

請教站長, 我朋友手上有一台,它是硬碟壞了.拆掉後,也是出現 diag燈閃五下的狀況,換一個新的硬碟也沒有用,請問,是否還有救? 爬您的文,知道可能JTAG是最後手段了.....能否相助那位幫您修護的聯絡方式?

Abin 提到...

閃五下就慘了。幫我 JTAG 的大大網址我文章第二段就有提到(翔工坊),我是用網站裡的資料 e-mail 聯絡的,不過他現在好像當兵去,要聯絡可能要找假日看看。

匿名 提到...

Dear Abin, 是啊~看到臉都綠啦~更遭的是..原來的內建HD也壞了..換新hd也沒有用(因為根本無法Clone),如果那位高手沒法修,,就只好依您所提供的資訊..自已diy jtag線了.. 不過首先就遇到一個難題..我的是LS2, 接排針時,還得要加一個100~1000 ohm的 SMD電阻..(板子上那二個小到不行的接點..這..這..這怎麼能搞的定.... >_<)..

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!