2023年9月19日 星期二

Fix my Orange Pi 3 SBC not able to power up

前幾天拿我的Orange Pi 3出來
取出MicroSD卡,更新Armbian到最新版本
想確認一下Panfrost會導致畫面閃爍/破碎的問題修正了沒
插上MicroSD卡之後開機,還在設定過程中突然斷電關機

重複一兩次都無法正常開機
伴隨著微微的異味
我想可能是有什麼東西燒掉了
用USB Current meter觀察
USB 5V被拉到3V,電流上升到3A多
緊急把電源斷掉
開始檢查板子(目測加上用鼻子聞XD)
會短路通常優先確認電源IC
(照經驗,SOT23-5的封裝,旁邊有電感,通常是DC/DC的Buck IC)
果然看到一個Buck IC有點異常

這顆IC中間有微微突起

根據旁邊的絲印,這顆IC是U55,找了一下Orange Pi 3的電路圖
可以確認是Wifi module的供電IC

SY8089A, 2A的Buck


先確認損壞程度,第一個先量IC,量到對地短量之後
把IC拆掉 (用烙鐵克難的拆)

拆下IC後檢查旁邊有沒有短路、錫渣
檢查各個Pad還有沒有短路,都沒有
上電觀察電流,正常
插上MicroSD/USB/HDMI
上電檢查,可以開機了!!! 
到這一步可以確認不開機是這顆IC短路
不確定Wifi模組有沒有問題

當下在家裡翻箱倒櫃,想找到Buck IC馬上修,甚至拆了一隻公司的樣品Dongle
可惜找不到適合的
Dongle上面有Buck ic,但只有0.8A,就只好放棄

禮拜一上班
去拿以前收集了廢料回家,再殺了一些不要的板子上面的料
我手邊沒有2A的Buck IC,但是有1.2A跟1.5A的
Wifi module吃電沒那麼重,而且我們的設計也都是一顆Buck就對Wifi module供電
就照上了!



IC的絲印被助焊油稍微遮住看不太到
我這邊改用TI的TLV62565,只有1.5A
但這顆是我手邊能殺到電流比較大的Buck IC了~

焊完IC(用烙鐵焊,加上那個位子很緊湊,所以焊的頗吃力)
目測檢查有沒有短路,沒有(開始有老花症狀了XDDD)
用電錶檢查有沒有短路,沒有
不插卡,用USB Meter上電檢查電流有沒有異常,0.2xA,Safe!
插卡、插USB、插HDMI,同時用USB Meter上電檢查電流有沒有異常
可以順利開機,電流沒有異常,開機後Wifi工作正常!!!

到這邊就可以判斷是修好了:D
以上
留個紀錄


2023年2月11日 星期六

I've reach my Raspberry pi usb current limit, so I've Hack my USB hub.

前言:
我有很多舊的小容量micro sd卡,外接USB Hub,透過usb讀卡機,接到我的Raspberry pi 3,再加上一個sata-usb轉換器,接上小容量SSD,透過btrfs建立一個raid10,當作NAS來使用

最近拿到一台二手的Raspberry pi 4,所以打算來升級我的NAS
(最近兩年Raspberry pi 4缺貨跟漲價實在是太誇張了...)

因為舊的Raspi3只支援usb 2.0,所以當初使用的usb讀卡機許多是usb 2.0的,升級到Raspi4之後,因應Raspi4有支援usb 3.0,所以順帶把所有讀卡機、sata-usb轉換器都換成USB 3.0

沒想到全部更新後,開始出現問題

  • 有很高機率開機會hang住
    (沒辦法正常開機,因為開機時mount btrfs失敗)
  • 正常開機後,對btrfs操作,寫入或讀取資料,有很高機率會出現錯誤,當出現錯誤之後,連同接在Raspi上的keyboard, mouse都沒辦法工作
分析:
從現象可以推測,應該是碰到Raspi的USB current limit,觸發OCP保護
單一個USB port,或全部USB port,總電流超過1.2A就會觸發OCP保護,導致所有usb device被強制斷電
https://support.thepihut.com/hc/en-us/articles/360015272218-How-much-current-can-I-draw-from-a-Raspberry-Pi-USB-port-

對策:
首先可以考慮可以外接電源的USB Hub
但實際上外接電源USB hub會衍伸其他問題
一種問題是USB hub外接電源逆向供電給Raspi,這個容易出現在低價型的USB hub,不確定是Cost down還是本身設計不良,如下圖

外接電源的DC jack,直接以0ohm貼片電阻連接到主要的Power rail,0ohm貼片電阻的零件名稱是D4,表示原先可能是要放二極體,但如果這個位置貼上二極體,當DC jack供電跟USB cable連接電腦同時存在,還是會由USB cable供電,所以我不確定這是不是設計不良。
可能也是因為這個緣故,所以改貼0ohm電阻直接短路。

所以需要一個可以外接電源,而且外接電源不會逆向供電的USB Hub,所以我拆了我的另外一個USB Hub

這個設計就比較合理,以二極體隔開外接電源與USB 電源,當USB電源沒有連接的時候,外接電源不會逆向供電回到USB電源
同時如果外接電源跟USB電源同時存在,以外接電源供應USB Hub電流

實際測試後,確實可以改善Raspi usb電流限制的問題
但又有新的問題,當Raspi關機或是重啟,USB hub因為連接外接電源,實際上不會斷電
這造成usb hub上的設備,有可能因為沒有斷電,下一次開機時沒辦法正常初始化usb設備

所以,我需要一個可以外部供電的USB hub,不會逆向供電給USB Host,當USB Host斷電時USB hub也會同時斷電

實做:
我找了一個現有的buck converter module
(身為一個工程師,手邊隨時有一堆module也是很合理的)

Buck convert IC是mp1584en,接著研究一下datasheet,看看這顆IC的enable有沒有enable功能,以及研究一下這個module可不可以拉出enable pin來控制
有Enable pin,正邏輯,Enable pin超過1.5v時enable output,Enable pin內部有pulled up到3v,內部pull up電阻不確定,但敘述有提到1uA current source,所以推測內部pull up resistor應該很大
考慮到Enable pin有Pull up到Vin,考慮不移除pull up resistor,直接串接的情況下,在USB hub這端透過電阻分壓,確保Vbus沒有連接的時候,Venable可以降到足夠低,同時避免Vin串到Vbus

接著評估怎麼修改
在Hub上找出對應的Pad跟Net,在Ground上找到對應位置,刮除綠漆,提供電阻焊接的位置

接著在Buck converter找出Enable pin的net,方便焊接的點
連接兩塊板子
檢查新增加的電阻、接線,有沒有短路,接觸到其他元件接點或是Pad
都正常之後上電測試,檢查電路工作是不是符合一開始的設計規劃
用三用電錶量測 Buck module Vin電壓,VBus in的時候VEnable電壓,VBus out的時候VEnable電壓,工作正常!
最後組裝

我得到一個可以外部供電(寬電壓輸入,但電壓需要再計算,至少12v可以工作)
不會逆向供電給USB Host,當USB Host斷電時也同時會關閉外部供電的USB Hub!

現在我的Raspi 4工作正常了~

Fix msmtp does not work in old ubuntu/debian version

主要是舊版msmtp沒有處理好email header 現在的smtp伺服器會檢查mail header 寄件人跟帳號不一致不給寄 收件人不是合法mail address自然不能寄 #!/bin/bash # Workaround until mtmsp >= 1.8....