2022年8月1日 星期一

用 RTL8153 自製 USB3 1G 網卡


本實驗室因計畫需要製作了一個 USB 網卡, 透過網路蒐集資料加上追蹤線路
使用各種推理(?)模糊的摸出來的產品, 雖然手法粗糙但用起來好像沒問題XD
這是本實驗室第二個有實際上線且全天運作的產品, 目前已經測了幾天, 沒有爆炸XD

先放出線路圖, 一共有兩個版本:

wt-23-fixed.pdf:這是最精簡版, 如果只要網卡功能, 可以用這個

wt-23-r2.pdf:這是有風扇 + LED 版本, 需要縮小外觀或是炫砲燈光用這個

Orange Pi R1 Plus LTS P.13:別人產品的線路片段, 僅供參考

R2 版帶 MCU, 韌體:wt-23-mini58.zip 細節請參考前篇:在 ubuntu 上開發 nuvoton Mini58

這次實際上是做出三張板, 第一張性能不好沒有採用, 第二張移除實驗性質電路和第一張相同
第三張即是電路複雜版, 有上線使用, 由於第二張是實驗性質就不提供原始線路, 只放照片
為了方便說明還是給上編號

上圖由左至右分別為 A 版, R2 版, B 版, A 版為第一張, R2 版為第三張, B 版為第二張
背面的樣子:

A 版和 R2 版零件全在底下, 散熱器接在接地銅箔上導熱
B 版則是只有晶片和少量零件在上面, 散熱器直接貼晶片散熱

由於我沒有原廠資料, 完全靠賭! 所以才會搞到三張, 因為這東西別的計畫也會用
重要性高, 才願意想辦法弄到好, 不然用現成的即可, 這種網卡已經價錢很殺了
完全沒有自己搞的必要, 但如果是要長時間使用, 並且要能維修的話, 還是自己整一個

這裡介紹設計要點, 由於不是原廠建議僅供賭博戶參考XD 商業戶請找原廠要資料, 不要白目XD
這張板主要解決散熱問題, 網上低價品最大的問題是散熱, 零件品質反而沒問題
我有一張 R2 版上的晶片被我幹了五次左右, 到處搬測試, 它都還活得好好的, 非常能幹 (雙關XD)
零件沒問題, 但電路板品質就不太行了, 這是全新的產品, 我風槍溫度壓低到 285 度, 結果:

上圖左的市售品幹一砲就大肚子 (鼓包的意思XD), 我找廠商做的板子幹了三次都沒事

為了散熱, R2 版用了大片接地, 打了一堆孔在晶片接地盤, 都 TM 打成蜂窩了

上圖為 R2 版, 藍色是背面層, 安裝時該面朝上, 全部地覆蓋
這板子外型看起來有點猥褻XD 這是為了卡住市場上買來的低價品的外殼, 絕非故意掏出遛○XD

這板子有兩區高速線路, 需包地處理

注意橘色線部份四周的配置, 這是應用處理器的佈線準則, 以後會再說明, 這裡只先簡介
維修有三板斧, 佈線也有, 這裡介紹高速差動信號三板斧:
1.兩線緊靠盡量等長 2.走線四周包地打孔 3.線長不得超出限制
維修三板斧是一個一個試, 高速差動信號三板斧則需一次全揮下才有用
上圖橘色線有一組是 clock, 雖然不是差動信號但需比照辦理

USB3 部份除了要套用高速差動信號三板斧, 有一通道上要串電容
R2 版線路 C8, C9 這兩顆, 串在 5Gbps 線路上, 我拿電料行來路不明的電容串上
接上後插上網線 kernel 會立刻報錯:

r8152 4-1:1.0 enx00e04d8e3755: Tx status -2
r8152 4-1:1.0 enx00e04d8e3755: Tx status -2
r8152 4-1:1.0 enx00e04d8e3755: Tx status -2
usb usb4-port1: Cannot enable. Maybe the USB cable is bad?
r8152 4-1:1.0 enx00e04d8e3755: Get ether addr fail
usb usb4-port1: config error
usb usb4-port1: Cannot enable. Maybe the USB cable is bad?
usb 4-1: USB disconnect, device number 15
usb usb4-port1: Cannot enable. Maybe the USB cable is bad?
usb usb4-port1: config error
usb usb4-port1: Cannot enable. Maybe the USB cable is bad?
usb usb4-port1: config error
usb usb4-port1: Cannot enable. Maybe the USB cable is bad?

直接在訊息裡提醒你線壞了XD
若兩電容直接短路則可以撐久一點, 有時可以過好幾天, 但仍會有這錯誤
只有從市售網卡上拔下來的電容上去才不會報錯, 不知道有什麼規格要求
所以最好買市售網卡回來殺肉, 那個料品有些規格上的需求
除了外部零件規格需求外, 由於這晶片 MAC 是燒在晶片上的, 如果買全新晶片回來
你的網卡將會沒有 MAC, 此時驅動會亂數生一組給你, 每次開機都不一樣
用在一些會鎖 MAC 的情境會有問題, 而刷 MAC 工具需透過廠商支援取得
為什麼我知道? 因為我有這工具XD 不過我是軟體單位, 我只有軟體工具沒有硬體設計資料
硬體資料全部都是網上搜來的, 沒有保密問題, 刷 MAC 軟體就不能提供了
所以建議用殺肉的, 這樣就沒有軟體問題

由於我沒有原廠資料, 所以最麻煩的是第三斧我沒有數據, 只能用賭的
上圖是 USB3 的接線, 另一組高速線在網口, 如下圖:

在○頭附近不對, 是在網口隔離變壓器附近, 千兆 (1G) 網路也是高速信號
橘色線為晶片接隔離變壓器的線路, 建議照抄, 後面會說明實驗結果, 詳細原理我不懂
但從晶片接腳定義應該可以感覺到原廠暗示你這樣做, 這是抄市售網卡上畫的樣式

網口外殼我用根細線串上電容 (上圖下方 C33 處) 接到信號地
因為看老廝的片子:这笔记本电脑被雷劈了,我宁愿雷劈的是我,太难修了

網口若會收到雷擊應該不會是小小的電子零件可以承受的XD
所以畫細線讓它直接燒斷感覺比較安全, 感覺!沒有根據XD
若有需要可上網找 RTL8152 的 Layout Guide, 裡面有說地要怎麼切, 但那說明包含四層板
有些要求雙面板比較難做, 所以能照做的就照做, 不好做的就...看心情XD

這顆晶片雖然網上可找到的規格書寫只吃一百多 mA, 但是可能有瞬間高電流

1.2×0.3 + 3.3×0.06 + 0.0005×5 = 0.5605, 直接算的話是半瓦, 5V 供電直接算就百 mA 出頭
不過......後面的實驗發熱量看起來實在不像百 mA, 但我也沒有辦法驗證, 就當它是對的吧
各組供電最好盡可能的寬, 我就是畫太窄才有一堆怪問題, 後來拿根粗線接上 5V 才擺平

至於多寬比較好我不清楚, 我拉個 30mil 是不夠的, 建議用戶可以直接乘二試試

以上就是板子部份的注意事項, 接著是外殼部份, 外殼用市售網卡的殼來改, 用這個:


R2 版設計兩個接頭:

上圖上方是焊線接法, 若要塞進市售殼裡就這樣接, 上圖下方為 USB3 Micro B 插槽
若要另外做殼或不裝殼就這樣接, 這接頭的特色是可以接 Micro USB 插頭, 只跑 USB2

把市售網卡外殼拆開, 上殼用鋸子切成三份


接著買風扇和散熱片


用螺絲把風扇鎖在散熱器上, 然後把散熱器黏上電路板

電路板比底殼高, 因為我選用沉入式的網口插槽, 底下零件多, 隔離變壓器比較高
提高電路板位置比較不會卡到底殼, 而這殼上蓋卡榫位置和下蓋不同, 所以要對齊上蓋

如上圖可以看到放進上蓋卡著, 拔插網線不會移動板子, 就像○頭卡進子○噗咻噗咻XD
這殼 USB 那側還有兩個卡榫, 但板子後段若再挖兩個槽會很難佈線
所以安裝時要割掉後面上蓋兩個卡榫, 前面的卡榫就足夠固定板子, 後面沒有沒差

裝起來的樣子:


B 版也可上線使用, 使用較大的散熱器, 無法塞進殼裡


散熱器加上矽膠導熱片, 安裝時中間夾上墊片:


然後鎖上螺絲:

側面看的樣子:

這散熱片是從對岸買來的, 應該是舊電腦北橋在用的, 現代南橋散熱器沒這麼大
散熱片出貨時是有附固定柱的, 但是壓力太大

用原廠固定柱直接拉到板彎, 所以改用螺絲配墊片
放一起的樣子:

這兩張都能長時間使用, 連接家用網路設備傳輸速度可達 112MB/s 而且可以連續轟炸不會爆

demo:RTL8153 USB3 GBE test



接著紀錄開發過程, 會想做這種隨處可買的東西, 一開始是因為 ubuntu 不支援公司電腦的網卡
內接的不支援, 插一個外接的就好啦, 買這張:
一開始好好的沒問題, 結果網路升級 1G 後開始不定期發燙, 還不是每次都發燙, 有時會, 有時不會
有一天突然斷網摸了被燙到才發現, 拆開一看:

臥槽, 流湯了, 這不是我加焊過的喔, 只是正常使用, 看起來應該是過熱達到接近焊接溫度
然後把生產時殘留的助焊劑給擠出來了, 熱到流出滾燙汁液, 有夠騷XD
這實在不像百 mA 會有的熱量, 有的 MCU 也可以吃到百 mA, 可是根本不發熱, 連溫溫的都沒有

一開始我透過背面黏散熱片降溫, 結果還是會過熱, 只好在晶片上也貼散熱片, 上下夾攻:


貼了那麼大的散熱片卻沒用, 我猜可能是因為它的設計, 背面的樣子:

九宮格圓點那裡是晶片中心, 底下接地被網口的四組差動信號分割, 接地面積只剩一點點

看一下板上零件好像沒很多喔, 而且我的主線計畫也獲得突破, 信心滿滿, 想說看起來應該不難
於是又買了一張比較便宜的, 即是這次殺肉用的產品, 買來拆解追蹤一下線路後重作一張板
這玩具本來預計兩三個月就能搞定, A 版線路二月底就固定
備料, 電路送廠, 組裝, 四月中就完成, 照片拍了文章也寫了, 結果!
最後發布前想說測一下速度, 一測:只有 11MB/s... 100M 網路速度啊, 太慘了
所以開始找錯, 重作, 全套弄完三個月就過去了, 唉呦...太靠北了
以為很簡單結果摔進坑裡, 爬出來後所有計畫延後半年, 太慘了
不過還有爬出來還是幸運的, 要是沒爬出來, 後面的計畫就很難玩了

追蹤線路時發現這兩張市售網卡有些奇怪的地方, 把兩張市售卡和我的 A 版放一起:

這叫 RGB 配色XD 左側這兩張市售卡除了 layout 有些不同, 線路應該都是一樣的, 尺寸也差不多
中間這片底下黏散熱器應急, 這兩家市售板都有配 SPI flash, 但線路非常奇怪
兩個網口 LED 用的接腳是接給晶片上的 CS 和 CLK, 正常應該是獨立使用
結果卻並接了一顆 SPI flash, 一般是開發板用來看有沒有訊號才這樣接
理論上要共用也不是不行, 但通常不會這樣做
結果我用示波器看了一下...CLK 根本沒發啊, 沒有讀資料的行為
而且把 SPI flash 拔掉後 MAC 還在, 沒變, 表示設定是存在晶片上
這顆 SPI flash 完全是多餘的, 再看看線路和 layout, 這兩廠商應該是隨便抄隨便做的
那個 Orange Pi 的參考線路就比較正常, 可見這兩廠等級有差XD


這是原本的文章第一張照片, 死了XD 它只能跑 100M, 於是開始抓錯, 線路上有兩個錯誤
一個是高速線路畫得不好, 三板斧少了一斧, 但這不是掉速的主因, 後來測試它速度還是可以上去
另一個錯誤才是重點:外部參考電阻配置錯誤, 但這個錯誤我一直到第三張板出來才找到

上圖是 A 版接內建變壓器網口附近線路, 我想說這差動信號也就三百多 MHz, 還好吧!XD
就給它拗到背面接上, 四周有包地但只包四組線的外圍, 四組線間沒包, 這個接家用設備可上千兆
但接到公司的網路就不行了, 立刻降到百兆
由於第三斧的參數不明, 所以我只能賭, 先賭沒有包地包好, 重新畫一張 B 版

B 版上第一次上 Mini58, 有一些修改, 這張板裝了 8 顆 LED, 真的有夠亮
這不是正常人會用的網卡XD 所以最後都只上上圖左的零件, 上圖右當紀念品, demo 用
上圖左的配置就和 A 版是一樣的, 所以只要看 A 版修正過的線路即可

由於沒有砍到要害, 問題沒有解決, 我又開始找錯, 這三板斧都下去了還是上不了千兆
難道是零件問題? 於是我換網口, 換另一個型號的內建變壓器網口

這是 dip 零件, 風槍幹不下來, 拿出上古殺肉神器:迷你手持錫爐
這是以前 8051 時代在用的, 以前都是 dip 零件, 腳太多要拆需同時融化所有腳的錫
就用這整鍋的錫, 電路板小心壓上去, 然後用鉗子拉起零件, 這是專業操作, 要練過
這可是整鍋超燙的錫湯, 很危險, 要注滿這鍋錫得用錫條, 這是迷你錫爐容量小, 一條就可填滿
結果換了...當然還是不行, 於是再把網口拔了改用隔離變壓器配一般網口, 一根一根接上

結果還是一樣, 此時我就開始懷疑難道是線長?
因為以前 HDMI 經驗, 線長錯是沒法靠 rework 修好的, 只能重作
所以我又又又畫了一張板, 即是最後的 R2 版, 拿到板後零件全上, 插線, 開命令視窗, 輕鬆翻車XD
崩潰啊!然後又拔料換網口測試, 結果還是一樣

甚至把帶變壓器網口拆開, 看是不是接腳順序錯, 這變壓器拆開來看起來有點噁XD
拿起網口卡榫朝上左邊第一隻是 1 腳, 這要仔細比對
R2 送廠前幾天才發現畫反了, 即時改正, 但是比了老半天都是對的
實際上 A, B, R2 版三張都是畫對的, 接線都是正確的, 由於我有別家高速差動信號的成功經驗
我認為 layout 問題應該排除, 不太可能是那裡的問題了, 想的很久想到最終絕招

我把市售品拿來, 把週邊零件換成我買的! 高速信號不動, 只動週邊, 換一個就試一下
結果拔到 RSET 電阻時, 掉速問題復現! 就是一顆電阻的錯!
RTL8153 第 47 隻腳, 外面接的 R11 需換成 2.5K (別家畫 2.49K), 我的電路圖上寫錯, 寫成 REST
我以為它是 reset 接腳, 隨便上個 10K 下地即可, 但它不是, 它是 R "SET", 外部參考電阻
上網查有些電路圖也是寫 REST, 可見不是只有我看錯XD 可是別人有廠商資料可抄
我沒有, 也沒有人可問, 而且不照抄是因為 SPI flash 那裡別人家也抄錯啊
市售品線路也不一定是對的, 於是就這樣來回折騰

最難的關卡過了, 接著就是完善週邊功能以及穩定性測試

看看 LED 可以點多亮XD 這部份 MCU 相關的測試放前篇, 由於這網卡要上千兆才會有發熱問題
所以線寬不足, 散熱策略都要在能穩定維持在千兆速度才能驗證, 於是又加改了跨接電線
USB3 串接電容, RSET 阻值, 這部份雖然我有換自己的參數, 但測到最後還是都換回市售版上的
所以還是要有市售版來殺肉比較容易, 那個 2.5K 是特殊阻值, 用殺肉的比較容易取得

最後測試結果:連公司網路 A 版仍會掉速, B 版連一天後掉速, R2 可以好幾天, 但有時仍會掉速
連接家用網路就沒差, 三版都不掉速, 目前我家裡電腦是接 B 版, 已經超過一週連續使用沒掉速
我個人認為這結果應該表示 R2 的佈線應該是最符合 RTL8153 的需求, 也就是市售佈線照抄的
A 版和 B 版則是可動作, 但可能不太好, 比較嚴酷的連線環境時性能會衰減比較多
網路設備硬體除錯是相當困難的, 在硬體端各家幾乎都是分成兩段:mac 和 phy
mac 是數位電路, phy 則是轉為差動信號輸出, 雖然我沒直接看過 phy 的硬體設計
但從軟體操作感覺它是帶 MCU 的, 它有許多自動完成的行為, 要發信號判斷當前是什麼規格的網路
10M / 100M / 1000M, 有沒有跳線, 幾條線可用, 各家規則可能會不一樣
而這部份若出問題, 除非有廠商窗口而且廠商願意幫你才有解, 這牽涉到內部設計
即便有解, 廠商也不一定會告訴你為什麼, 而沒有資料和窗口的個人用戶, 肯定只能用賭的
這方案很多產品用過, 網上資料比較好撈, 可是 USB3 網卡的方案可不只這家
其他家的要找線路就很難了, 連賭資都沒有實在不知道怎麼賭, 所以才選這方案
最終結果是贏了, 但如果加考慮耗時過程和費用, 簡直輸到脫褲XD

RTL8153 這方案相當便宜, 一張網卡三百元就有, 但有一些相容性問題, 例如老外痛罵 USB3 不通:
USB 3.0 to 10/100/1000 Gigabit RJ45 Ethernet LAN 1000Mbps Network Adapter (WHL #34)
內文擷取:
As I don’t give a flying fuck whether that is the fault of Realtek or ASMedia,
I’ll just post the results of the adapter running in the 2.0 mode.
Dear Realtek, if that bothers you and makes your hardware look shitty:
Make your friggen device work with this standard USB chip.

老外浪費了大量時間測試, 超氣!XD
USB3 我也有遇到一些問題, 但主要是在我做的板子, 市售板沒遇過問題
市售板我遇到的是發熱問題, 只要全速運轉就會超燙! 不是只有一百多 mA 怎麼有辦法這麼燙
所以如果老外最後找到可以對接的 USB3 電腦, 接著一定會痛罵發熱問題XD
而我設計的板上錯料時 phy 會不斷重試, 可能是遠端拒連, 也可能是 phy 判斷異常
這段時間系統的反應和老外說的一樣, 系統上層不會立刻回報斷線, 就卡在那邊
若是 Linux 有 kernel 訊息會看到 carrier on/off 一直重複
所以只要在 console 下 dmesg | grep 8152 就可以知道從接上線以來有沒有斷線過
老外有提到主要競爭對手:ASIX AX88179, 這顆我有上網搜過, 當我除錯到崩潰時有想換過XD
但很遺憾, 啥也沒撈到, 只能繼續搞 RTL8153

這系列目前最新是 RTL8156, 這個我也買了, 本來是想看如果差不多乾脆再跳一級

2.5G 網路, 全鋁殼


邊角圓, 處理的不錯, 貼得很平, 有夠難拆XD


把後蓋撬開即可取出, 後蓋是用膠黏死的, 後蓋撬開就損毀, 卡榫斷裂, 只能黏回去


像抽屜一樣, 電路板完全沒有接觸外殼, 意思就是這鋁殼就只是個裝飾品, 完全沒有散熱功能XD
正面看上去多了一個六條腿的晶片, 旁邊有電感, 疑似 PWM 穩壓


背面比較大的晶片像是 SPI flash, 不知道是不是冗餘料件XD 2021 年的方案, 剛出爐沒多久的
左上角多了顆五條腿的晶片, 看起來疑似線性穩壓, 整機多了兩零件, 差蠻多的
如果只是穩壓到還好兜, 但就怕不是, 我也懶得研究, 等有廠商用了有放線路我再拿來抄XD
另外這網卡除了難拆, 價錢也高, 要六百多, 若是店面買甚至會破千, 當料機不划算

由於都是螃蟹的產品, 以防萬一, 加上矽膠散熱墊

一層不夠就多疊幾層

疊到可以碰到鋁殼為止, 最上層為了容易推入不移除膠膜, 剩下的移除膠膜黏起來
然後接上電腦, 透過網路傳個大檔案, 外殼馬上升溫, 有效!

做這東西如果只是單純獨立網卡, 有廠商支援問題不大, 做消費產品連消費級設備應該不難
如果要連接一些特殊設備, 例如企業用複雜規則交換機, 或是想要整合進應用處理器的系統
有些時候就算有廠商窗口也不一定能解決問題, 特別是那個會自動控制的 phy 部份
就算配置正確, 供電不穩時也是會有一堆怪現象, 尤其搭配應用處理器時
有些現象只有在特定條件下才會觸發, 光是找那觸發條件就有得受了, 如果偏偏又是出去了
到客戶手上才觸發, 有客戶在後面頂(?)著, 壓力就非常大了
會搭配到 USB3 的系統肯定都是跑 OS 的, 軟體非常複雜, 軟硬體人員要更加緊密的合作
才有機會找到問題, "有機會", 還不是一定找的到, 若找不到就上 workaround
抓隻看門狗盯著看, 出錯了狗狗就咬下去 (wdt reset 的意思)XD
現代做嵌入式系統要求很高, 不像 15 年前, 那時候只要有個 UI 就可以賣了, 還超貴
就算畫得 TM 超慢也沒關係, 有就好, 而到了 10 年前繪圖加速開始爆炸發展
那時候的系統比較難一些但還好, 投入多一點時間還是可以掌握
現在則是又加了兩樣進來:機器學習和相機, 現在的應用非常變態
相機送給機器學習再塞給影像壓縮然後用繪圖加速畫出, 四樣全上啊臥槽
應用處理器被榨到極限, 很容易翻車, 如果再加個網卡進來沒事給你用力抽一下電
好玩的事情就會發生囉~ (工程肥宅:幹!笑屁!) 然後受到壓力的肥宅就會越吃越肥XD
做這個門檻很高, 但至少有活可幹, 疫情來後不少門檻低的活都消失了, 取而代之的是詐騙
最近的柬埔寨新聞, 太慘了, 而且是以人換人, 由於是認識的人邀約更容易上當
現在想要輕鬆賺錢大概只有加入民進黨了, 全台最大合法詐騙集團, 看看那林九萬
林飛帆遭批當「林9萬」後立場大變 朱立倫:民進黨要為美豬扛起責任
只要上街鬧, 臉書到處嘴就可以, 就算立場一直過髮夾彎也沒關係
當年自己吵最大的兩岸監督條例已經沉進海底, 黨都給錢還吵什麼, 對不?
我剛進公司領的薪水連他的一半都沒有, 再看看另一個叫林秉樞的
哇, 那個更屌了, 天天住飯店還有龐大存款, 還可以把別人眼中的女神當女僕來使
這種生活大概只有加入民進黨才有了, 別來搞什麼嵌入式了, 現在入黨即享優惠!XD

2 則留言:

  1. 看你的文真的頗刺激,一堆梗都有戳到我的笑點什麼老斯、RGB、變壓器拆開有點噁、港湖女僕XD
    喔對了,被雷打到那個簡易要壓敏跟ESD二極體去搭,然後電源不穩也是很多LDO或DC/DC周邊被動元件偷料的結果,可以考慮嗑一點電源管理IC的概念文來預防踩雷。

    回覆刪除
    回覆
    1. 女僕已經變回女神而且聲量很高, 鄉民想煎魚, 沒料到這魚耐高溫XD
      壓敏跟ESD二極體應該是搭在信號線上的防雷吧? 手邊有庫存但當時實在不知道速度為何上不去
      就不敢多搭這些東西, 那會延長信號線, 雖然就是延長個 1~2mm, 因為參數不明就不放了
      所以這張板的防雷只防外殼串進來的, 信號線串進來穩死XD 外殼串進來也沒驗, 可能也會死XD
      我電源部份沒抽料很實在的, 比網卡附的還大顆的線繞電感和公司撿來的全新電容
      網卡的電源腳每支都有配電容, 一顆也沒少, 正常是可以偷拔個兩三顆走的XD
      電源 IC 的工作原理是知道的, 但是它和其他東西整合時會如何影響, 這就比較難了
      這類比較實務的東西可能不是只懂一點概念就能解的, 只能看硬體部門的老哥們在解問題時
      沒事就探聽一下加減撈, 我們軟體段的東西已經看不完了, 要再同時去挖硬體能力有限啊

      刪除

注意:只有此網誌的成員可以留言。