IMG_0674

本世紀初 Canon 公司的一款相機產品 D30 以「第一款不到 10 萬台幣的數位單眼(DSLR)」強勢切入攝影主流市場後,單眼相機全面數位化已成為不可逆的趨勢,然而即便如此,並不代表數位單眼也變成數位垃圾產品的成分之一,因為價格相對昂貴、產品升級步調相對緩慢、產品相對耐候堪用、類單眼產品與手機攝影功能進步的夾擊之下,數年一次的新品上市,DSLR 用戶們不一定會跟著把器材升級。

以我個人來說,在「器材大閱兵」這篇文章紀錄 2002 ~ 2008 及 2015 年,約七年時間內陸續購入總價約六十多萬的攝影器材,DSLR 也陸續入手 Canon EOS D60 / 5D / 5D Mark II(以下稱 5D2)三台,如今絕大多數的出圖來源換成了手上的 iPhone 4s/5s 手機,畢竟手機的聯網分享與 App 修圖功能,比數位單眼方便太多了,只有在手機辦不到的狀況下,例如人像大光圈散景(拍咩)、鳥類(打鳥)、晨昏(搖黑卡)、商攝、月蝕 /星空...等場合,才會把把攝影器材搬出防潮箱。

Portrait

Landscape

Portrait-2

Landscape-2

Landscape-3

說實在的,手機攝影的軟硬體功能再強大方便,也無法撼動 DSLR 瞬間捕捉到的影像價值,但是從數位單眼拍攝到出圖與他人分享的過程,仍然是一件相對漫長的過程,稱不上方便。所幸近幾年的數位單眼產品逐漸加入聯網功能,彌補了一部分不足,但是對於跟我一樣是 Canon 牙膏公司的用戶來說,Wifi 聯網功能只出現在近年來的中低階 DSLR 產品,中階以上得加買貴森森的無線外掛模組,似乎永遠搔不到癢處。牙膏亂擠的結果,身邊已有不少朋友用戶紛紛「出家為尼」。(Canon 佳能 -> Nikon 尼康 / Sony 索尼)。

於是心想,有沒有辦法找到一個便宜又有效率的方法,結合手機的便利與 DSLR 的影像品質,將手邊的老機機(5D2)加入方便好用的聯網功能呢?答案,算是有的,投入費用還可以低至台幣千元有找!

首先談到,最簡單、直接的解決方法是購入一張內建 Wifi 的 SD 卡。在 PCHome 上這類產品也不少,依照容量廠牌的差異,價位分佈在千元至 3 千元不等。這產品有個好處,就是不限相機,只要是使用 SD 卡做為儲存媒體的產品幾乎都可用,相容性高,但相容性高也是缺點之一,這類產品只能實現傳檔讀檔的動作,沒有無線控制設備的功能,而且對於 Canon 5D Mark II 這台只能吃 CF 卡的老機機來說,仍須需要一張 SD 轉 CF 的轉卡才使用。

PChome 24h購物

偏偏最大也最致命的問題,就是敗在這種轉卡上:

  • 轉卡品質良莠不齊:Wifi SD 卡對轉卡有不確定的相容性,轉卡對 5D2 也有不確定的相容性。輕則買來不能用就算了,重則在使用的過程中,把卡片裡的檔案搞壞。
  • 透過轉卡後寫入速度大幅滑落:1080P 錄影很容易只錄個十幾秒就中斷卡死,也就是說 5D2 用了這種產品後,就很難錄影了。

PChome 24h購物

我之前買過 PQI Air Card 這款,綜合起來只能算勉強堪用。它是透過刪除內建初始化階段產生的三張圖檔來控制啟用的無線功能,三台相機(D60/5D/5D2)測試後只有 5D2 可以用,因為只有 5D2 能辨識內建的三張圖檔,其他兩台不行。這產品還有其他問題,如 App 不太好用、使用 App 時相不能做寫入檔案的動作,否則很容易搞壞圖檔等糟糕的問題。如今 PQI 也停賣且不再出後續產品,Wifi SD 也不是這篇文章要講的重點(上面都是前言瞎扯),所以這裡也不再多談。

PQI Air Card

另一種方法是,使用無線聯網套件與 5D2 相機 ,讓 5D2 得以透過無線網路控制。

官方早期發表過 5D2 的無線控制模組 WFT-E4( I / II ),日幣定價約 100,000 羊,最後到市場的新品實賣價格約一萬五台幣上下。採電池手把設計卻只能裝一顆電池(文件)的設計就令人不解,等於是電池把手廢一顆電池功能來滿足聯網 + 拍攝動作,續航力恐怕更短。

WET-E4-II

後來 Canon 官方又出現一款更奇葩的產品「W-E1」,價格便宜許多,港幣 340 元(合台幣約一千多)。外觀就一般 SD 卡,插入相機 SD 插槽後就能讓沒有聯網功能的近幾款 DSLR 相機(7D2/5DS/5DSR)支援無線網路,奇葩的是這玩意兒並不像上面的 Wifi SD 的存檔功能,並不能把照片存在這張 SD 卡內,也就是說廢掉 SD 槽儲存功能(剩 CF 槽)來滿足聯網,實在搞不懂「東邊給一塊,西邊就割一刀」的設計邏輯在哪,更好笑的是,據說香港的 7D2 在出貨的時候就直接附贈這玩意,等於 7D2 的「聯網和雙卡」在出貨時就是魚與熊掌的關係,這就是牙膏亂擠的情況,令人無力吐槽。

W-E1

而實現聯網的第三方套件也是有的,產品設計成可以安裝固定在熱靴上,價格也親民多了,大約 160 鎂。

Air Wireless

這玩意也有半開放的解決方案。有一款可操控 Canon、Nikon、Sony 三大廠 DSLR 的第三方應用程式叫「qDslrDashBoard」,支援 USB 與網路兩種連結相機的方式。這款應用程式的控制界面雖然有些複雜,但功能卻相當強悍,並支援 Windows / macOS / Linux / Raspberry Pi 2&3 / iOS / Android 多種平台,只有 iOS / Google Play 需付費,其他平台都免費,作者可說是相當佛心!以內建 Wifi 功能的 DSLR (如 6D/6D2 )來說,應用程式端與相機有網路連線就能運作。不具備聯網功能的 5D2 也只要用 USB 線把電腦跟 5D2 連起來也能用程式操控相機,功能包含上面提到的傳檔。

qDslrDashBoard_G

qdd_ui

對於不具備聯網的 DSLR,該程式作者也發表一支名為 ddserver 的應用服務程式,以及兩款網通產品(無線分享器)內含 ddserver 服務的韌體:TL-MR3040TL-MR3020。只要將對應的韌體刷進無線分享器內,刷過韌體的無線分享器用 USB 連接 5D2 ,經網路設定後,5D2 就能夠以有線或無線 Wifi 網路與 qDslrDashBoard 應用程式連線運作。更佛心的是,ddserver 程式和韌體也都是免費,而且 ddserver 還有開放原始碼

https___dslrdashboard.info_downloads_

MR3040 與 MR3020 體積小且攜帶相當方便,唯一不同的地方是 MR3040 有內建鋰電池,MR3020 要在外面使用就得加帶一顆行動電源。我在 2016 年初就以 299 元的史上超低價格買入一顆 MR3040(定價約一千出頭,市場實賣約 500~800 元),再以近 300 元的價格購買 iOS 版的 qDslrDashBoard 程式,加上一條 mini-USB 的連接線,總花費才不到 700 元台幣,就實現了 5D2 聯網控制的目的,對比動輒數千上萬的解決方案來說,真的是相當超值。

TL-MR3040

TL-MR3020

 

不過在 299 入手之後 MR3040 就從此停賣,成為絕響。當時沒買到 MR3040 的同學,如今想讓 DSLR 老機機支援聯網功能的話,似乎只剩 MR3020,出門就得幫 MR3020 拉一條電池尿袋,比較不方便。

於是我心裡又浮現了另一個疑問:萬一我的 MR3040 壞了,不見了,怎麼辦?有沒有其他無線分享器也能運作 ddserver 服務呢?

答案:也許是有的!或許找不到像 MR3040 那樣便宜好用內建電池又能支援 ddserver 服務的無線分享器,但我們目前還是可以找到別的能運作 ddserver 的機器。前面寫了一大堆都是瞎扯話,這篇目的就是要教大家,怎樣製作提供 ddserver 服務,讓老機機也有聯網功能的方法!

終於要進入真正的重點了。別轉台...

前面提到 ddserver + qDslrDashBoard 程式中,ddserver 服務免費,只有 iOS / Android 版收費,可體會作者認知的真正價值是手機/平板的連線控制體驗,並開放由他人實現 ddserver 服務的商品設計。以 MR-3040 為例,當我把 qDslrDashBoard 官網上提供的韌體刷入 MR-3040 分享器之後,分享器就變成了一台運作 OpenWrt 系統的網通設備,ddserver 則是 OpenWrt 環境下的一支服務程序。至於 OpenWrt 是啥玩意,簡單的說,它是一款支援超多種硬體規格,開放原始碼並且免費的網通設備韌體,詳情可參考 OpenWrt Wiki

再講得白話一點,如果有一台硬體設備能運作 OpenWrt ,有 USB 埠,也有網路埠(有線/無線),我們就有機會讓它變成 5D2 的聯網設備。

既然 OpenWrt 與 ddserver 都是開放原始碼,我們就可以依照不同使用環境需求,找出適合使用的硬體規格,編譯對應的韌體,讓它在對應的設備上運行。

0、前置準備工作

一台電腦。用來編譯 OpenWrt 的電腦。由於編譯的時間會相當漫長,過程中還會持續自動下載不同硬體的編譯工具,所以這台電腦有些重點要注意: 

  • Ubuntu 作業環境:編譯 OpenWrt 只能在 Ubuntu / Debian 的環境下,建議用 Ubuntu 16+,因為 Debian 編譯時會有缺套件的問題得另行排除。
  • CPU 與連接 Internet 網路的速度越快越好。
  • 剩餘硬碟空間至少 10G 以上,越大越好:來回編譯了幾種硬體的韌體之後,工作目錄就高達 15G+,所以 10G 可能只能編一兩種,萬一編錯硬體,容量又滿了,得砍掉重來。

一、下載與設定 OpenWrt 編譯環境

操作不難,開個終端機視窗,依序執行指令就行了。

(1) 下載相關套件

$ sudo apt-get update
$ sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk zlib1g-dev
$ sudo apt-get install subversion mercurial

(2) 下載 OpenWrt 原始碼

$ git clone https://github.com/openwrt/openwrt.git

更新 feeds 內容

$ cd ~/openwrt
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

(3) 檢查套件完整性

$ make defconfig

如果到了這一步沒有顯示任何錯誤,就表示編譯的環境沒有問題設定完成,離成功很近了。

(4) 試編譯一次

這個步驟會消耗大量時間,如果想一氣呵成,這個步驟可先跳過,直接到步驟二。

$ make menuconfig

會出現一個選單。先按 Esc 離開,詢問存檔時選 Yes。

然後執行編譯

$ make V=99

接著就是漫長的等待,所需的時間由電腦 CPU 和網路速度決定。以黑蘋果為例,CPU: 四核心 i7-3770 / 網路 100M/40M 大約將近兩個小時。 

二、下載 ddserver 原始碼與修改編譯參數

(1) 下載 ddserver 原始碼

$ cd ~/openwrt
$ git clone git://github.com/hubaiz/DslrDashboardServer package/DslrDashboardServer

(2) 修改 Makefile 檔案內容:由於 ddserver 0.2-14 的編譯參數是對應 OpenWrt 15.x 版,在最新的 OpenWrt 17.x 會出現錯誤,所以要修改 ddserver 的 Makefile:

$ cd ~/openwrt/package/DslrDashboardServer
$ nano Makefile

18 行:
DEPENDS:=+libusb-1.0 +uclibcxx
改成
DEPENDS:=+libusb-1.0 +uclibcxx +libstdcpp

35 行:
LIBS="-nodefaultlibs -lgcc -lc -lusb-1.0 -lpthread -luClibc++"
改成
LIBS="-lgcc -lc -lusb-1.0 -lpthread -luClibc++"

2018-05-27 02-43-25 的螢幕擷圖

按 Ctrl +x 詢問存檔選 Yes 再離開。 

三、編譯設定

執行 make menuconfig

$ cd ~/openwrt
$ make menuconfig

出現設定選單。

2018-05-27 02-04-43 的螢幕擷圖

由於我們的目的只是讓老機機支援聯網功能,所以相關的設定其實不多,只把有相關的設定列出說明:

Target System:屬於何種架構的硬體設備。
Subtarget:硬體設備名
Target Profile:預設編譯概括
Target Images:輸出格式

四個要怎選,後面再舉例說明。

接下來選擇必須編譯的項目,移到項目上按空白鍵讓它打 * 號。(打 M 表示只編譯套件,不加入韌體)

LuCI ---> 1. Collections ---> <*> luci
LuCI ---> 2. Modules ---> Translations ---> <*> English (en) 和 <*> Taiwanese (zh-tw)
Multimedia ---> <*> ddserver

離開詢問儲存選 Yes。

四、其他架構的設備

回到前四個怎選的問題。由於這四個項目會互相聯動,所以選擇的方式是從上面第一個開始設定,再依序挑選。

OpenWrt 支援的硬體很多,手邊有的設備除了 TL-MR3040 之外,連樹莓派、小米 Wifi mini 也有支援。前四項設定如下:

TL-MR3040 ver. 1 :

目前 Github 的 master 分支裡 TL-MR3040 的 Subtarget 設定似乎有錯,須把分支改成 lede-17.01:

$ cd ~/openwrt
$ git checkout lede-17.01
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

前四項設定:

Target System ---> Atheros AR7xxx/AR9xxx
Subtarget ---> Generic
Target Profile ---> TP-LINK TL-MR3040 v1 
Target Images ---> 不更動

 

樹莓派:以 64bit 為例

Target System ---> Broadcom BCM27xx
Subtarget ---> BCM2710 64 bit based boards
Target Profile ---> Raspberry Pi 3B/3B+
Target Images ---> 不更動

小米 Wifi mini:

Target System ---> MediaTek Ralink MIPS
Subtarget ---> MT7620 based boards
Target Profile ---> (Xiaomi MiWiFi Mini
Target Images ---> 不更動

五、編譯

執行指令

$ cd ~/openwrt
$ make V=99

然後是一連串漫長的編譯過程。如果先前的步驟 一、(4) 試編有執行的話,編譯的時間會縮短些。完成時在 ~/openwrt/bin 底下會出現一堆目錄和檔案。

以樹莓派來說,真正要拿來刷寫的韌體的只有一個:

~/openwrt/bin/targets/brcm2708/bcm2710/openwrt-brcm2708-bcm2710-rpi-3-ext4-sdcard.img.gz

再依照樹莓派刷寫系統的通則,使用 Etcher 直接把這個檔案刷寫進 microSD 卡,再把 SD 卡插入樹莓派開機就行了,

重新編譯的話 可先執行 make clean 再執行一次 make V=99。不改設定重編的話,通常可在幾分鐘內完成。

其他種類的分享器刷韌體的方式,只須透過分享器原有的 Web 管理界面,將編譯出來的韌體檔案上傳即可。

六、連線運作與 Openwrt 設定

以樹莓派例,在刷入韌體後,過電開機時 Wifi 預設是關閉的,所以第一次要先用實體網路線連接電腦和樹莓派。樹莓派開機後就變成一台分享器,預設 IP 為 192.168.1.1 並啟動 DHCP。電腦端用瀏覽器連上 192.168.1.1 則會開啟 OpenWrt 的 Web 管理界面,設定完登入密碼,再到無線網路項目啟用之後,樹莓派就會產生一個名為 Openwrt 的無線 SSID 名稱。

接著 DSLR 老機機(5D2)用 USB 接上樹莓派,任何可執行 qDslrDashBoard 設備連入名稱為 Openwrt  的 SSID 之後,執行 qDslrDashBoard 程式,點擊無線連接的按鈕就會自動網路連接老機機,開始享受老機機也有聯網控制的體驗。

老機機聯網後能做啥?傳圖檔到手機,手機遠端遙控相機,錄影即時預覽(Live View)到手機、即拍即傳,或是設定間隔拍縮時,補強一些老機機本來沒有的功能。

IMG_0674

弄懂運作和設定之後,後續可透過 Web 管理頁面,修改 SSID 名稱與加入無線加密,

七、 x86 虛擬機

比較特別的是,Openwrt 也支援 x86 架構,也就是一般的電腦。不過我不建議用實體電腦來練習,因為得找到網卡的驅動程式,韌體映像檔案也得用上空硬碟,實在不方便。由於前兩項選擇 x86 之後,第 4 項的輸出格式可以選擇 .vmdk 與 .vdi 兩種,所以我們可以用 VMWare (吃 .vmdk 格式)或 VurtualBox (吃 .vdi 格式)在虛擬機中執行 x86 的 OpenWrt 設備。

x86 虛擬機的前四項設定:

Target System ---> x86
Subtarget ---> Generic 或 x86_64
Target Profile ---> Generic
Target Images ---> Build VirtualBox image files (VDI) 與 Build VMware image files (VMDK)

x86 架構的虛擬機設定重點只有三個:

  • 作業系統選擇 ubuntu
  • 硬碟機選擇編譯結果的 .vmdk 或 .vdi
  • 硬碟機必須模擬 IDE 界面

八、問題與期望

翻遍 Openwrt 的相容硬體表後發現,市售的分享器中目前除了 TL-MR3040 之外,很再找到另一個適合外出使用的老機機無線控制器。再者經過多次測試後, ddserver 除了在 x86 模擬器能以用戶端模式運作,在其他設備上還沒成功過。這意味著無線控制器必須一律以 AP 模式啟動,每次要與 DSLR 老機機連線時,手機必須跳離原來的 Wifi 環境後連上 AP。如果是單純用手機抓取 DSLR 某些圖片並上傳分享的話,必須下意識切換到正確的 Wifi,進而影響操作體驗。

希望支援用戶端模式的目的是,想要傳檔時,只須開啟手機的網路分享功能,等無線控制器連上來就好了。手機變成 AP 模式,就能從 DSLR 拉圖過來後直接用 3/4G 網路把圖片傳出去,一切都完成後關閉手機的網路分享功能就好了,省去一些手動切換網路的操作,相信這樣做的體驗會更順暢方便。 

相关文章