今天要實現的目標是讓樹梅派可以透過乙太網路(實體網路線)與PC互連通,進行傳輸資料。
環境:
PC (作業系統 Win 11)
樹梅派 4B (作業系統 ubuntu server 23.10 64bit)
cat6實體網路線(1Gbps)
前置作業
將實體網路線一端接在樹梅派,另一端接在PC的網路接口。
在樹梅派配置
1.安裝dhcocd (用來配置靜態IP)
sudo apt-get install dhcpcd
2.編輯dhcpcd配置
sudo nano /etc/dhcpcd.conf
新增靜態IP設定:在檔案的底部加入以下內容,用你想要的IP位址和子網路遮罩替換掉192.168.1.X和255.255.255.0:
interface eth0
static ip_address=192.168.1.X/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
實際範例:
這邊用 192.168.1.156 作為樹梅派靜態IP (確保沒有其他相連裝置使用這個IP)
interface eth0
static ip_address=192.168.1.156/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
保存後,退出 (ctrl + o , ctrl + x)
3.重啟dhcpcd服務
sudo service dhcpcd restart
在Windows配置
控制台 > 網路和網際網路 > 網路和共用中心 > 變更介面卡設定
找到 乙太網路 > 右鍵 > 內容 > 網路功能 > 網際網路通訊協定第4版(TCP/IPv4) > 內容 > 一般
使用下列的IP位址
IP位址 192.168.1.157 (自定義,一樣不要跟其他裝置有衝突到IP即可)
子網路遮罩 255.255.255.0
預設閘道 192.168.1.1
慣用DNS伺服器就設定 8.8.8.8
之後在Windows的CMD 可以 ping 192.168.1.156
並在樹梅派的終端機 ping 192.168.1.157
看看是否都能ping的通。自己實測的結果,windows能ping通樹梅派,但樹梅派ping不通windows
原因在於,windows的防火牆,因此我們要設定防火牆規則
控制台 > 系統及安全性 > Windows Defender 防火牆 > 進階設定
在輸入規則 > 右鍵 > 新增規則 > 自訂 > 所有程式
選擇IGMP通訊協定類型
套用規則給本機IP ,設定windows 乙太網路的靜態IP , 192.168.1.157
遠端IP則設定,樹梅派的靜態IP,192.168.1.156
這樣就能在樹梅派ping通windows,到這邊就能用乙太網路讓樹梅派跟Windows互連通了!
接著,可以使用WinSCP用樹梅派靜態IP連線到樹梅派傳遞資料,或者安裝smb軟體。
實測傳輸結果
1Gbps(125MB/s)的線,實際傳輸600MB跟2GB的檔案,測試出來的結果
使用WinSCP 速度約為20MB/s (沒法全速跑)
使用SMB 速度約為100MB/s (合理值)
其他問題
樹梅派無法連結上網路
連接乙太網路後,可能會遇到的問題是,樹梅派的wifi無法連接上網路(外網)了,這個情況是因為,乙太網路的優先度高於wifi導致的,而我們的這種乙太網路連接方式,只是讓樹梅派跟PC互傳,本身無法直接連線到外網,因此網路無法使用,我們需要修改優先權。
#使用這個指令 ip route show default via 192.168.1.1 dev eth0 src 192.168.1.156 metric 1002 default via 192.168.50.1 dev wlan0 proto dhcp src 192.168.50.82 metric 3003 192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.156 metric 1002 192.168.50.0/24 dev wlan0 proto dhcp scope link src 192.168.50.82 metric 3003 192.168.50.1 dev wlan0 proto dhcp scope link src 192.168.50.81 metric 600 metric 越低,表示優先度高 其中,wlan0是Wifi , eth0是乙太網路
修改優先度
#編輯dhcpcd.conf sudo nano /etc/dhcpcd.conf #在dhcpcd.conf的最後添加 interface wlan0 metric 100 interface eth0 metric 200 保存後退出重啟 sudo service dhcpcd restart 測試是否ping的通 ping 8.8.8.8
感覺PC的網路有時會突然卡一下
自從連接乙太網路線後,會感覺有時PC的網路會卡一下,然後又正常,過段時間又會在卡一下。自己有個合理的猜測是PC的乙太網路的優先度高於wifi
但乙太網路本身連不上網,所以系統有時會先用乙太網路嘗試,嘗試後發現乙太網路沒法上網,才又切換使用wifi上網,所以才會有這個情況。
(單純自己這樣猜測的,實際是否這樣不得而知...)
總之,來調整優先度,以下是Win11的操作方式
在Win11的修改方式,使用系統管理員開啟PowerShell (在CMD無效,一定得在PowerShell)
輸入Get-NetIPinterface 指令
Get-NetIPinterface
ifIndex是裝置的索引值(可以當作ID),InterfaceMetric則是優先度,越低優先度越高
Set-NetIPInterface -InterfaceIndex "14" -InterfaceMetric "20"
我的Wi-Fi 的ifIndex是14,具體的Wi-Fi ifIndex要改成自己的。
成功的話,不會有回傳訊息,可以用Get-NetIPinterface 看是否有變化。
注意:得用系統管理員身分開啟PowerShell (右鍵以系統管理員身分開啟),不然會沒有存取權限
改完以後,好像真的比較快了,但也可能是錯覺 哈
文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)
原文連結:
https://blog.aidec.tw/post/raspberry-pi-ethernet-conn-pc
若有業務合作需求,可寫信至: opweb666@gmail.com
創業、網站經營相關內容未來將發布在 小易創業筆記