文章總列表

Raspberry Pi 設定 VNC

VNC官方設定文件

Raspberry Pi從2016/9之後,預設內建RealVNC。這套是VNC原始開發者的產品,市場領導品牌。RPi基金會和RealVNC公司都提供設定文件,官方文件真的比Blog文章好很多,點開來讀準沒錯。



VNC的2種modes {Service/ Virtual}

大概照著做就會動了,然後就可以關閉網頁。如果要追根究柢可以繼續讀這篇,RealVNC一共有{service/  user/ virtual} modes,以RPi內建的5.x版只有{service/ virtual}兩種模式。Service mode會把RPi的HDMI輸出顯示的東西,原封不動打到VNC Viewer上,和直接操作電腦沒兩樣。Virtual-mode僅限Linux,會啟動另外的private workapce,很像用ssh登入機器,每個session不互相干擾。稍後的文章會介紹Virtual mode。


設定VNC Service Mode

參考RPi的文件要設定VNC Service Mode,首先用raspi-config打開VNC interface。為了避免麻煩,請先把RPi接電腦螢幕,也許解析度是1920x1080,後面我們再來解這題。在GUI mode底下看VNC Server的IP:


然後抓VNC Viewer,網頁裡各種版本都有,我試過PC/ Android都沒問題。下面的圖是PC連線的畫面:




繼續改VNC Service Mode

我的RPi有新增自己的帳號,怪了,為什麼上一段我只能用pi的帳號登入?經過仔細翻找RealVNC文件,底下表格有答案。原來要把帳號加入sudo這個group才會動。



VNC Service Mode,拔掉螢幕線繼續改VNC Service Mode

前面我建議插著螢幕設定VNC,拔掉後連線變成底下的畫面。因為沒有接螢幕,RPi會預設用很小的解析度。如果想把RPi放在某個沒接螢幕的地方,遠端登入不就出事了?


這篇RealVNC說明講得很詳細,照著修改/boot/config.txt,下圖的#82代表1920x1080x60hz。重新開機就會動了!




VNC Virtual Mode


前面說的都是Service Mode,意思是把本機的畫面投影到Viewer上。如果同時有多人想用VNC連線,但是本機畫面只有一個,代表只有一個人能用。這很遜耶!Linux號稱多人多工的作業系統竟然只能一人使用。RealVNC的免費License提供Virtual Mode能解這題。首先用ssh登入機器,輸入vncserver並且提供解析度(預設1024x768,現代人應該是不能接受),然後VNC就會啟動一個private workspace,輸出的訊息同時也包括怎麼用VNC viewer連線(使用192.168.1.251:1)。冒號跟著的數字是Virtual Window的編號。


底下是原理圖,開出的Virtual Window全部都在記憶體。只要記憶體夠,就可以多個人同時連上RPi進來工作,彼此不干擾。



ReaVNC怎麼賺錢?

寫到這裡,RealVNC都把功能開出來給大家用,那要怎麼賺錢呢?回頭看上述的步驟,如果某個人要遠端連線工作站,他要處理的麻煩事:
  1. 先ssh進入機器,打下vncserver並提供解析度,記下螢幕輸出的IP和編號
  2. 打開VNC Viewer輸入,完成連線
  3. VNC Server Free License只支援5個VNC Desktops,如果某個人用完忘記kill,其他人就不能用

上述的(3)有個解法叫Virtual Mode Daemon,就是大家連線都用:99連線,然後VNC Session Manager會幫忙開啟VNC Server,用完再關閉session。下圖是我在RPi強制連線的畫面,因為我沒買License就不給用了。有興趣可以去申請試用License感受看看。如果只是個人使用,上述流程折騰一下也就算了;如果是企業使用,同仁每天折騰這些流程也燒掉競爭力了。


寫到這邊,我要問讀者一個問題:是遠端連線的程式技術門檻高,還是上述這種管理session的門檻高?這就是現在自由軟體的賣錢方法,大家不願意被廠商綁死,所以核心技術都會Open Source;但是配套的管理程式要賣錢。免費版讓大家用到爽,並且在裡面設下一些的小限制(比如只准開5個server),進階功能收費。某方面也可以說是養套殺,不然您就自己開發這些功能吧。

Final Word

藉著安裝RPi RealVNC,我順便研究了VNC的工作原理{Service/ Virtual mode},多年來我都沒搞清楚。看懂以後,順便也把開源軟體的商業模式研究一下,真的滿有趣的 :-)

留言

這個網誌中的熱門文章

STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收

幼犬書桌椅選擇心得 升降桌 兒童桌椅

CANON G3000 廢墨瓶改裝