快轉到主要內容

iPad當樹莓派螢幕,透過USB-C連線到VNC遠端桌面

分類   Linux系統 Linux使用技巧
標籤   IPad Raspberry Pi VNC
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

樹莓派因其體積小易攜帶的特性,很適合帶出門搭配iPad使用,當作隨身小電腦,作為一種sidecar。雖然它的處理器性能比iPad弱,但是能做的比iPad多,比如跑許多Linux的軟體,像 架設AltStore伺服器,用於給iPad側載的第三方APP重簽;或者跑 libimobiledevice指令備份iPad檔案;以及用 UxPlay接受來自AirPlay的投放。

我們就來討論用iPad螢幕存取樹莓派桌面的方案。

1. 方案探討
#

需不需要給樹莓派額外準備電源線呢?其實iPad就可以給樹莓派供電了。iPad的USB-C電流輸出足夠給樹莓派開機的,畢竟它都能給手機充電了。

要讓iPad當樹莓派螢幕,最簡單的方式是買個USB擷取卡, 將樹莓派HDMI畫面輸出到iPad的擷取卡APP,然後用藍芽滑鼠控制樹莓派的桌面。

但是,我想要從iPad直接SSH到樹莓派,並且用VNC客戶端遠端控制樹莓派的桌面,所以讓樹莓派與iPad有線連接。

要如何連線到樹莓派,有兩種方式。

一是Wifi連線,也就是樹莓派連著iPad的USB-C開機,樹莓派自己連線到Wifi或者Wifi熱點,iPad再透過區域網路的IP登入樹莓派。

二是透過乙太網路,把樹莓派變成乙太網路卡,參考我之前寫過的 透過USB傳輸線,從Linux電腦登入樹莓派系統。在樹莓派連著iPad的USB-C開機之後,iPad會把它當成乙太網路連線,我們就可以透過RNDIS乙太網路IP登入樹莓派。由於是有線連接,VNC遠端桌面延遲非常低,也方便我們把iPad檔案傳到樹莓派。

iPad是允許同時使用Wifi與以太網路連線的。但是,把樹莓派變成乙太網路卡會導致其無法上網,變成只有iPad跟樹莓派之間能夠連線,樹莓派還是得另外連Wifi才能上網。

最終,我的解決方案就是:讓樹莓派連著iPad開機,並透過以太網路IP登入樹莓派以取得最低延遲,並讓樹莓派連線到Wifi。

如果出門在外,提供Wifi熱點的裝置為何?我的iPad沒有行動網路,自然就是用我的Android手機了。

啊,如果你覺得都有Wifi了還用乙太網路連線是脫褲子放屁,太搞剛,那麼不設定乙太網路,單純把iPad當成樹莓派的行動電源就行。

2. 環境
#

  • iPad Air 6
  • iPad OS 17.6.1
  • Raspberry Pi 5
  • Raspberry Pi OS Debian 12 Bookworm

搭配APP:

  • a-shell,開源SSH客戶端,因為iSH Shell有認不到DNS的問題
  • RealVNC Viewer,閉源的VNC客戶端

3. 安裝樹莓派系統
#

這步驟建議用電腦操作。

  1. 在電腦安裝 RPI Imager,刷入系統到SD卡,設定開機自動連線到Wifi

  2. 樹莓派開機之後,測試使指令ssh 使用者名稱@raspberrypi.local登入系統。

4. 將樹莓派調整為USB乙太網路
#

如果要直接使用Wifi連線登入樹莓派的,這段可以跳過。

  1. 透過Wifi登入樹莓派

  2. 編輯:sudo vim /boot/firmware/cmdline.txt,啟用dwc2核心模組

modules-load=dwc2,g_ether
  1. 編輯:sudo vim /boot/firmware/config.txt,關閉otg mode,新增dtoverlay
#otg_mode=1
dtoverlay=dwc2
  1. 用nmcli新增ethernet網路
sudo nmcli con add type ethernet con-name ethernet-usb0

5.編輯網路設定:sudo vim /etc/NetworkManager/system-connections/ethernet-usb0.nmconnection,新增以下內容

[connection]
id=ethernet-usb0
uuid=uuid
type=ethernet
autoconnect=true
interface-name=usb0

[ethernet]

[ipv4]
method=shared

[ipv6]
addr-gen-mode=default
method=auto

[proxy]
  1. 由於上述網路開機不會自動啟動,所以得新增Systemd service:sudo vim /lib/systemd/system/usbgadget.service
[Unit]
Description=My USB gadget
After=NetworkManager.service
Wants=NetworkManager.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/nmcli con up ethernet-usb0

[Install]
WantedBy=sysinit.target
  1. 設定開機自動啟動
sudo systemctl reload-daemon
sudo systemctl enable usbgadget.service

5. 架設VNC服務
#

雖然樹莓派有內建RealVNC伺服器,不過我比較喜歡 TigerVNC

6. iPad端的設定
#

  1. 將樹莓派接上iPad,iPad的設定應該會出現「乙太網路」連線

  2. 點進去會看到樹莓派已經自動分配了一個IP

  3. 接下來要暫時把iPad的Wifi關掉,這樣才能強迫iPad從乙太網路登入樹莓派

  4. 開啟a-shell,用ssh 使用者名稱@raspberrypi.local指令連線。

  5. VNC比照辦理,RealVNC Viewer輸入raspberrypi.local:5900應該能連線到TigerVNC

  6. 成功登入樹莓派後就可以把iPad的Wifi開啟了。

7. 樹莓派網路問題
#

作為乙太網路卡情況下,樹莓派沒辦法上網

請執行sudo nmtui connect指令,讓樹莓派連上其他Wifi。

8. 樹莓派音訊問題
#

大部分開源VNC都不支援音訊

樹莓派5又拔掉了耳機孔

只好利用樹莓派的藍芽連接喇叭輸出音訊了。下圖為Blueman GTK

參考資料
#

相關文章

給VNC遠端桌面啟用GPU加速,Linux VirtualGL設定方式
分類   Linux系統 Self-hosting自架
標籤   VNC VirtualGL Raspberry Pi
Linux&樹莓派當作藍牙喇叭接收器,電腦播放手機音樂
分類   Linux系統 Linux使用技巧
標籤   PulseAudio PipeWire KDE Connect Raspberry Pi
透過USB傳輸線,從Linux電腦走RNDIS協定登入樹莓派系統
分類   Linux系統 Linux使用技巧
標籤   Raspberry Pi

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。