前幾篇文章提到硬體廠商在做產品出貨前,可以檢閱 GPL 軟體授權適法訣竅 中的 Tips,確保自己沒有違反授權。但授權適法訣竅中的綱要非常精簡,若你在出貨時才驚覺 GPL 的授權問題,想從訣竅中找到保全的方法,大概也已經來不及趕在出貨前重新檢查所有的細節。

比較好的作法,就是在日常產品開發中,就將 GPL 相關授權問題納入公司執行規章中,如此便可避免相關的法律問題。

若你的公司才剛開始注意到 GPL 相關事宜,不妨參考 Software Freedom Law CenterGPL 遵守實務。這份文件中廣泛的說明一些容易造成授權問題的公司體制,例如允許大神級的工程師 (Build Guru) 製作最後的出貨版本,而非定義一個出貨程序。文件中也說明了違反授權的類型、收到律師函的因應措施以及其他的類似授權所產生的問題。值得參考。

話說知名製作人阿怪 (aguai)兄前陣子拿了一台 ASUS WL-700gE,說是閒置著所以打算刷成其他版本的軔體,借給我一段時間研究。謝阿怪恩准玩弄他的寶貝。

事先調查在 OpenWrt Wiki 及阿怪的機器上調查了硬體規格,WL-700gE 的 SoC 速度是 BCM3302 v0.6 at 266 MHz, 2M flash 以及 64MB DDR-SDRAM。除了內建 IDE controller 與硬碟外,還有三個 USB 2.0 接頭 (VIA Vectro VT6212)。若想玩硬體修改,板子尚留有一個 Mini PCI 腳位,只要再想辦法焊接接頭即可。不愧是當動物園養寵物的好物。

剛拿到的時候,自然先從它的官方軔體研究起。阿怪機器的出廠值是 1.0.4.6,內建的 udhcpc 0.9.8 有點老舊,以至於與某些 DHCP Server 有些相容的問題。(像是我家的小 ISP,就一直無法取得 IP。)

於是就換到 ASUS 官方下載頁面的最新版軔體,1.0.7.8。udhcpc 還是基於 0.9.8,不過原始碼中倒是加了 patch (by Arthur, Chan-I, Joey, JYWeng ?) 來修正相容的問題,於是總算可以連上網路沒問題。

ASUS 的官方軔體中,我比較感興趣的是它所提供的網路攝影機與 P2P 下載功能,以及較少人使用的 DAAPDLNA Digital Media Server 功能。

網路攝影機的部份,ASUS 只載入了兩個驅動程式,分別是 ov51x v1.65-1.10-mark 與 pwc 8.11,若要測試相機功能,必須找到相容的硬體才行。我的 Webcam 是 UVC 介面,無法在 WL-700gE 上使用。

至於 P2P,WL-700gE 內建了 ctorrent (ctorrent-1.3.4.700gE.3.3, ctorrnet 已停止維護,新版可於 dholmes 的網站下載)。據我所知,ctorrent 1.3.4 尚未支援 Super-seeding, DHT, Peer exchangeEncryption特色,這些缺乏的功能將會嚴重影響上、下傳效能。

ASUS 倒是為 ctorrent 補強些功能,最明顯的是加了檔名的多國語言處理 (雖然只是用 /shares/bin/iconv 來轉),因此就算下載內含不同編碼方式的檔案,儲存後也不會變成亂碼,WL-700gE 仍然可以正確儲存讓使用者存取使用。

不過 ASUS 並未釋出修改過後的 ctorrent 原始碼,而只提供了二進位檔案。由於 ctorrnet 是 GPLv2 授權,說起來是 ASUS 違反了 GPL 授權。除了可以下載 BitTorrent 外,ASUS 還擺了 giFT 0.11.8.1,giFT 是支援數種不同的 Peer to Peer 檔案分享協定的軟體,包含了 FastTrack, OpenFTGnutella 等數種不同的協定。giFT 這麼好用的東西也是採用 GPLv2 授權,ASUS 當然也沒有提供原始碼。

DAAP 的功能,則是用以將硬碟中的音樂檔案分享給 iTunes,在 WL-700gE 是採用 mt-daapd 0.2.4 (現稱為 Firefly Media Server), ASUS 並未釋出相容是 GPLv2 授權的原始碼。至於 Digital Media Server 則是採用 Intel® Digital Home Device Code Wizard (原 Intel® Authoring Tools for UPnP Technologies) 的 SDK,採 Intel 私有授權。

雖說上述幾個 GPL 授權軟體,ASUS 並未釋出原始碼。但是 ASUS 其實已經在網頁上提供了 GPL 相關授權的壓縮檔,可以讓使用者自行下載。相較於行為更某些糟糕的廠商,ASUS 已經相當有誠意的放出了大部分的程式碼,包含用以編譯系統的原始碼(Build system and Makefile),甚至連私有軟體都放出函式庫或執行檔,包含了網頁管理介面所使用的函式庫。因此使用者有機會可以自行重新編譯與官方相同的軔體。就誠意來講,應該大大鼓勵。

之所以說有機會可以自行編譯,是因為 ASUS 送出的檔案似乎曾經受過某些工程師的無意修改,因此不少 Makefile 都必須再稍加調整後才能正確編譯。我稍微修改了一版 1.0.7.8 可完全編譯的版本。尚需找個地方擺原始碼才行。

不過非常可惜的是,ASUS 刻意保留了部份加強過的 GPL 軟體原始碼,雖說應該是商業上的考量,但是還是違反了授權。不管你是自有品牌、或 OEM/ODM 硬體廠,若使用 GPL 授權之相關軟體, 建議出貨前應該參考GPL 軟體授權適法訣竅檢查一遍為妥。

另外一個值得一提的是,這兩版軔體預設都開啟了 utelnetd,於是你可以直接連入一探究竟。若你對官方軔體的內容感興趣,相關軔體版本都可於官方下載。此外,這是 1.0.4.6 的 (disk) 軔體檔案列表,1.0.7.8 的列表於

另外,網路上也有人提到 ASUS 無意中於 www.asus.ru 釋出的 2.0.0.7 版本。功能似乎類似,但是網頁管理介面倒是用 Java Script 加強了不少,外觀看起來先進多了啊。

(本文是事後才整理,由於記憶不佳及缺乏測試,某些資訊可能有誤)