Skip to main content

Chromecast 一代改造 改善散熱及收訊問題

Google 的 Chromecast 可以放方便的把影像投放到電視上,可是一代的機構設計過於狹小,導致散熱不易,過熱的時候會出現 LAG 或是連線中斷的情況,尤其是使用 Mirror 鏡射功能的時候,或是有連續使用較長的時間,LAG的情況會變得很嚴重。


另外就是收訊問題,一代的天線只有一根,如果放在電視後方(尤其是如果是有鐵殼的電視),
或是基地台距離比較遠導致訊號不好時也會常有 LAG 的情況發生。


Chromecast 二代有對這兩個問題作修正,可是手上已經有Chromecast 一代的怎麼辦?
為了解決一代過熱及收訊不良的問題,對 Chromecast 做些改造改善散熱及收訊部分,
不過只要是拆開了就沒有保固了,不過一代的產品應該也都過保固了就是。


如何拆解請參考 Chromecast Teardown - iFixit
拆開之前拍的照片找不到了,借用 iFixit 圖片方便做說明。


首先把 Chromecast 拆開,周圍看起來好像是用膠或是超音波融合,


需要用些方式從HDMI接頭沿著外圍一一撥開
裡面是由鐵殼做屏蔽,散熱由導熱矽脂將熱量導上殼的一個鋁塊作散熱


圖中上殼內面綠綠的就是導熱矽脂


裡面有一個刻有編號的鋁塊


將鋁塊移除後下方也是使用大量的導熱矽脂做散熱將熱量導到塑膠殼上


散熱不佳一個原因是晶片到屏蔽殼有個不小的高度差(約1mm),屏蔽殼到散熱鋁塊也有個高度差,
散熱鋁塊到外殼也是有高度差,即使是使用了導熱矽脂做熱量的導出,
這些高度差也會導致散熱的速度不佳。


再來即使熱量導到散熱鋁塊,也因為外殼為塑膠材質無法快速的散熱,
最後熱量持續的累積導致溫度過高。



圖: PCBA正面


紅色框框內就是我們主要要加強散熱的晶片位置,也就是要熱量產生最多的來源。


仔細看了一下,手上這版 Chromecast 1 處理器已經改用 Chromecast 2 同樣新版的處理器以及周邊IC


Marvell ARMADA 1500 Mini Plus SoC (88DE3006)
dual-core ARM Cortex-A7 media processor


Marvell 88W8801-NMD2 Marvell Avastar Wi-Fi SoC
IEEE 802.11n (1x1) single-band (2.4GHz) Wi-Fi SoC with integrated PA, LNA, and TX/RX


Marvell PG821A DC/DC Power Regular (MRVL 21AA3)


圖: PCBA反面


TOSHIBA 2GB Flash Memory(TC58NVG1S3HTA00)


SAMSUNG 4Gb DDR3 SDRAM (K4B4G1646D 32Mbit x 16 I/Os x 8banks)


Marvell  88PG868 DC/DC Power Regular (MRVL G868)



改造步驟

Step 1 - 減少散熱片間隙


注意! Step 1 部份要增加銅片的話要很小心不要短路到下方的電路,
如果沒有把握的話這部分可以跳過不處理。


主要是改善晶片到屏蔽殼高度差散熱問題,雖然有導熱矽脂做散熱可是間隙過大會造成效率不佳。
如果有現成厚度剛好1mm 左右,大小剛好可自黏的散熱片就可以直接黏上去,
或是自己增加一片約 1mm 厚度散熱銅片(不能太厚屏蔽殼會蓋不上)。


再剪下不導電的散熱薄墊片(棕色框)放在電路上方做隔離,
再把1mm 厚度散熱銅片放上去,記得各散熱片間要上些散熱膏,最後再把原來的屏蔽鐵殼蓋回去就可以了。


圖: 不導電的散熱薄墊片(棕色框)


圖: 1mm 厚度散熱銅片放上去(棕色框)


Step 2  - 外加天線


正面PCB右下角就是天線的 Layout, 把最尾端紅色框的綠漆刮掉製銅箔露出來,
將天線焊上去就可以了。


天線的銲接處(紅色框)


Step 3 - 鑽出散熱片安裝需要的孔


這裡是用手邊剛好剩下有的電晶體用散熱片,大小合起來剛好可以固定在原有的鋁製散熱塊上,
不過外殼需要挖個孔來安裝,只要是合適的散熱片都可以,不一定要圖中這種。


圖: 電晶體用散熱片






外殼挖孔:
先用鑽頭在要挖孔的地方先鑽個洞,
再用刀片及斜口鉗把需要安裝散熱片的上殼挖出約 15mm x 30mm 的孔。


鋁製散熱塊鑽孔:
在鋁製散熱塊上對準電晶體用散熱片的鑽絲孔位置,鑽一個螺絲固定孔。


圖: 挖好 15mmx30mm 的孔以及 鋁製散熱塊上的螺絲固定孔。





外殼上也需要鑽一個孔來將天線延長出來。
圖: 天線延長鑽孔(紅色框)


Step 4 - 組裝測試


固定螺絲要注意鎖上去的長度不能超過鋁塊的厚度,
如果螺絲鎖上去突出來會造成間隙導致散熱不好,也會破壞到下方的鐵製屏蔽殼。


最後就是組裝起來了,把電晶體用散熱片鎖上去,
不過安裝前記得所有散熱片間都要上些散熱膏,
外殼看是要用膠黏回去還是用個束線帶綁著也可以。


這就是最後完成的樣子,有點像一隻"飛鳥".....
圖: 最後組裝完成圖


實際測試連續使用鏡射功能久了真的還蠻熱的,可能是有直接把熱量散出來的關係,
後來又加了一片更大的散熱片直接黏在電晶體用散熱片上,
目前測試是沒有熱當的情況發生,如果還嫌散熱不夠好,可能真的要加個風扇了。






圖: 最後組裝完成圖 加散熱片



增加: 使用鏡射功能停頓或不順

另外就是使用鏡射功能的時候如果會有停頓不順的現象 (好像Chrome某個版本之後,取消了選擇輸出解析度選擇的功能,變成自動模式之後),

可以使用無線網路+有線網路的模式,不要只使用無線網路就可以比較順暢。




Comments

Popular posts from this blog

KSB037 Motor Board 馬達板擴充積木

KSB037 Motor Board 馬達板擴充積木 key: makeblock,microbit,motor Description 說明: 使用 KSB037 Motor Board 馬達板擴充積木 https://github.com/edisonchiu/pxt-motor-KSB037 History v0.1 來源版本 https://github.com/lioujj/KSB037 v0.2 修正字串錯誤 Step 步驟: 1. Makeblock -> Advanced -> Add Package 2. 在 Search or enter project URL… 輸入擴充積木網址,      https://github.com/edisonchiu/pxt-motor-KSB037 3. 按下搜尋會出現擴充積木,按下去新增擴充積木 4. 積木區就會出現新的積木可以用了。 KSB037 馬達擴充板 擴充積木測試程式 KSB037_CustomBlock_Test 目的說明: 按下按鈕可以測試馬達和板子是否正常運作 注意事項: 馬達擴充板 外接馬達需要外接電源,且電源開關需要開啟。 馬達擴充板 指撥開關 2,3,4,5 需要在 ON 的狀態。 功能說明: 按 A 左邊馬達往前全速(1023)運轉。 按 B 右邊馬達往前全速(1023)運轉。 按 A+B 兩邊邊馬達同時往前全速(1023)運轉。 以上皆非則馬達停止顯示中心一個點。 micro:bit - KSB037 Motor Simple Test (JavaScript) Source Code 源碼如下:

Maze - Blockly Games

Blockly Games : Maze 1 Question 問題: Solution 解答: moveForward(); moveForward(); Blockly Games : Maze 2 Question 問題: Solution 解答: moveForward(); turnLeft(); moveForward(); turnRight(); moveForward(); Blockly Games : Maze 3 Question 問題: Solution 解答: while (notDone()) {   moveForward(); } Blockly Games : Maze 4 Question 問題: Solution 解答: while (notDone()) {   moveForward();   turnLeft();   moveForward();   turnRight(); } Blockly Games : Maze 5 Question 問題: Solution 解答: moveForward(); moveForward(); turnLeft(); while (notDone()) {   moveForward(); } Blockly Games : Maze 6 Question 問題: Solution 解答: while (notDone()) {   moveForward();   if (isPathLeft()) {     turnLeft();   } } Blockly Games : Maze 7 Question 問題: Solution 解答: while (notDone()) {   moveForward();   if (is

Image Decoder - Grasshopper

  Image Decoder Details 詳細解說: // 宣告變數 img, 型態自動依初始值設為字串 // 設定初始值為存放影像編碼 var img = "ewvveewvvw wiiwiiw webbwbbew weeggweggw ewyyewyyew woowoowe wrreewrrw"; 程式一開始宣告變數 img 存放影像編碼,影像編碼內穿插了 ‘e’ 這個字元符號,這個多餘的字元符號可以是任何沒有使用到的字元都可以替代,例如使用 ‘x’,或是使用兩種以上都可以,不過程式解碼時要記得都要濾掉。 這些多餘的字元符號把原來的圖案弄亂,所以可以讓不知道解碼的人看不出來是什麼圖案。如果我們收到知道如何解碼,可以把 'e' 字元符號去掉(Filter out 'e’),就可以看到原來的圖案了 IMAGE DATA // 原來要顯示的圖樣 空白字元表示換行 var img =      "wvvwvvw wiiwiiw wbbwbbw wggwggw wyywyyw woowoow wrrwrrw" IMAGE DATA ENCODE // 影像編碼內穿插了 ‘e’ 這個字元符號,把原來的圖案弄亂 var img = "ewvveewvvw wiiwiiw webbwbbew weeggweggw ewyyewyyew woowoowe wrreewrrw" // 解碼部分,依序判斷陣列中的字元不為’e’ 則畫出編碼內容方塊 for (var letter of img) {   if (letter !== ‘e’) {     drawBoxes(letter);   } } // 將變數 img 印出,  print(img); 因為我們並沒有改變 img 內容,所以 img 內容仍是含有 ’e’ 字元未解碼的狀態  YOUR CODE // 宣告變數 img, 型態自動依初始值設為字串 // 設定初始值為存放影像編碼 var img = "ewvveewvvw wiiwiiw webbwbbew weeggweggw ewyyewyyew woowo