close

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) 試編譯一次

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

$ make menuconfig

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

然後執行編譯

$ make V=99

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

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

(1) 下載 ddserver 原始碼

$ cd ~/openwrt
$ git clone https://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,進而影響操作體驗。(已解決:可設定為無線分享器的模式,解決此問題,詳情於本文 9.2 )

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

 九、補充說明

9.1 僅編譯特定的套件

以 DslrDashboardServer 為例,語法如下

$ cd ~/openwrt
$ make package/DslrDashboardServer/{clean,compile} V=s

9.2 Raspberry 4B 樹莓派的問題暫時解法(2020.04.26 補充

截至目前為止,OpenWrt 只有 snapshot 版支援樹莓派 4B,也不太不穩定。反覆測試之下,只有黑蘋果能連得上 4B 的 5G AP 模式,其他通通不行,因為看不到 SSID。

不過有暫時便通得方法,讓 iOS 裝置連上 4B 的 5G 網路。原理是先設定 2.4G 網路並與 iOS 裝置連線並設定為自動連線之後,再把樹莓派 4B 的網路改為 5G 設定。iOS 端關閉 Wifi 再開啟,讓它自動去連。

以 5G 網路連接 iOS 裝置時,LiveView 傳到 iOS 裝置的畫面會明顯順暢很多。

概略說明一下整個流程:

(1) 編譯設定:

Target System ---> Broadcom BCM27xx
Subtarget ---> BCM2709/BCM2710/BCM2711 boards (32 bit)
Target Profile ---> Raspberry Pi 2B/3B/3B+/3CM/4B)

其他(如 LuCI,ddserver,nano )可參考上面文章的設定。編譯成功之後得到檔案 openwrt-bcm27xx-bcm2709-rpi-2-ext4-factory.img.gz 。

(2) 將編譯完成的 OpenWrt 韌體檔案刷寫入 microSD 卡(可以使用 Etcher 免費軟體),再將 microSD 移到樹莓派 4B。樹莓派用有線網路與電腦對接。接著將樹莓派開機。

(3) 電腦開啟瀏覽器,輸入 192.168.1.1,先設定 2.4G 網路:

一般設定 --- 模式:N,頻段 2.4GHz,頻道:7(2442Mhz),寬度:40 MHz。若需要無線加密,在底下的「無線安全」設定。
進階設定 --- 國別碼:TW,允許舊型 802.11b 頻率取消勾選。

2020-04-26 01-55-22 的螢幕擷圖.png

2020-04-26 02-01-15 的螢幕擷圖.png

(4) 開啟終端機,用 ssh 連線到 192.168.1.1,編輯 /etc/config/wireless 檔案。

2020-04-26 02-04-19 的螢幕擷圖.png

(5) 在「config wifi-device 'radio0'」區段補上 「option short_gi_40 '0'」,Ctrl+x 存檔離開。

2020-04-26 02-08-38 的螢幕擷圖.png

(6) 輸入 reboot 讓樹莓派重開機。

(7) 重開機完成之後,開啟瀏覽器連線到 192.168.1.1,到「網路」-「無線網路」,啟用無線網路。

(8) iOS 裝置連線到 OpenWrt。連線完成之後 iOS 裝置把 OpenWrt 設定為「自動加入」。

IMG_85B762258094-1.jpeg

2020-04-26 02-16-17 的螢幕擷圖.png

(9) 回到電腦端,將設定改為 5G :

模式:AC,頻道:36(5180MHz),寬度:40 MHz,接著按「儲存」。

2020-04-26 02-19-54 的螢幕擷圖.png

(10) 按下「保存並啟動」。

2020-04-26 02-21-10 的螢幕擷圖.png

(11) 手機端將 Wifi 關閉再打開,如果會自動連上 OpenWrt 就表示成功了。電腦端可以看到接收速率快了約一倍。

2020-04-26 02-23-54 的螢幕擷圖.png

9.2 將 OpenWrt 作為無線分享器。

參考資料:【Aiden】讓你的樹莓派成為"帶著走"的路由器 | 樹莓派教學

(1) 電腦端連上 OpenWrt (有線或無線皆可) ,開啟瀏覽器輸入 192.168.1.1。若無線網路尚未啟用,則先到「網路」-「無線網路」啟用。

(2) 到「網路」- 「介面」,新增介面,設定如下:

  • 名稱:任意(方便識別,取名 WAN)
  • 協定:看需求,這裏設定為 DHCP 用戶端(DHCP Client)。
  • 介面:已太網路卡 eth0

設定完成按下「建立介面」

(3) 接著在防火牆設定,指定 wan。

貼上的影像_2020_4_26_上午3_18.png

按儲存,回到介面的主畫面。

截圖 2020-04-26 上午3.21.18.png

(4) 編輯 LAN,到「實體設置」頁籤,把乙太網取消選取。

貼上的影像_2020_4_26_上午3_24.png

最後按下儲存。回到介面的主畫面

(5) 在介面主畫面按下保存並啟用,無線分享器的設定就完成了。

貼上的影像_2020_4_26_上午3_27.png

接著只要把 OpenWrt 的有線網路端,連接到家裡或旅館的分享器有線端。好處是 iOS 裝置連線到這台 OpenWrt 之後,不僅可以上網,也能同時運作 qDslrDashBoard 操作相機、不用切換網路了。

arrow
arrow

    benjenq 發表在 痞客邦 留言(4) 人氣()