• 4

打造 QNAP 變形金剛(QNAP TS-112)

報名參加了 QNAP 舉辦的尋找特務Q!誰是最強 QNAP NAS 達人活動並選定瘋狂改裝Open組,當然是要來點不一樣的內容不然就違背了"瘋狂"的定義,確認選定這個組別後就已無退路,那只好大刀闊斧的下去改,不過礙於手上 TS-419U 還在服役中,所以本文設備是向 QNAP 借來的,在不更動硬體規格,不影響保固的情況下,本文也只能介紹軟改,不提硬改。

什麼是 QPKG
QPKG 是一套專為 Embedded Linux 系統(如NAS)而設的軟體套件管理系統,讓使用者可輕鬆簡單地安裝額外的軟體套件(如 MLDonkey, Joomla 等),豐富 QNAP NAS 的應用。所有發佈於 QNAP 官方網站的軟體套件(包括世界各地社群發展的軟件),必須經過 QNAP 認證,防止入侵系統的惡意程式或潛在的資料損毀,讓用家可安心地使用。安裝套件的方法非常簡單,只需透過網頁介面幾個步驟即可,無需編寫複雜的程式。

早期各家 NAS 大廠所推出的產品,可說是幾近封閉的伺服系統,雖然功能與界面已可滿足絕大多數用戶的需求,但是每個人使用的環境、需求畢竟多少還是有些差異。身為負責的廠商為了兼顧開放與安全兩者之間的平衡考量,無不傷透了腦筋,所以 QNAP 率先推出 QPKG 套件,讓用戶有機會得以自行選擇安裝官方認證過的套件,這樣的創舉已在 NAS 界引起不小的震撼。話說小弟接觸 Optware(IPKG)已有多年,深覺 Optware 的威力,而 Optware 裡頭更是已有數以千計的各式各樣的免費套件,打開 Optware 就等於向這些數以千計的 Embedded Linux 的 App Store 接軌。那該如何描述 QPKG VS Optware(IPKG)之間的對應呢? 這時腦海突然浮現這樣的對白:這就像小麻雀飛進了大森林,小蝦米遇到大鯨魚,小野草碰到了大榕樹,小番薯遇到大鐮刀了! 這樣解釋大家應該都懂了吧

安裝 Optware
對本文有興趣的朋友相信對 QNAP NAS 已有一定的了解,所以我們捨去比較基本的初始開箱步驟,直接跳至 QPKG 操作系統,並點選右手邊"取得 QPKG"按鍵。
打造 QNAP 變形金剛(QNAP TS-112)

進到 QNAP 官方的 QPKG 套件下載網頁
打造 QNAP 變形金剛(QNAP TS-112)

找到 Optware 套件下載連結
打造 QNAP 變形金剛(QNAP TS-112)

安裝完 Optware,此時人生還是黑白的
打造 QNAP 變形金剛(QNAP TS-112)

必須執行啟動的程序
打造 QNAP 變形金剛(QNAP TS-112)

當它從黑白變成彩色,你的改機人生才會多采多姿
打造 QNAP 變形金剛(QNAP TS-112)

另外,須確認是否開啟 ssh(telnet) 功能,因為接下來透過 ssh(telnet) 連進NAS操做
打造 QNAP 變形金剛(QNAP TS-112)

連進後第一件事,更新 ipkg 套件資料庫
# ipkg update
# ipkg upgrade

安裝常用工具
# ipkg install nano usbutils module-init-tools

記錄一下系統原始狀態
# lsusb
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002

# lsmod
Module Size Used by
iscsi_tcp 7839 0
libiscsi_tcp 12027 1 iscsi_tcp
libiscsi 30440 2 iscsi_tcp,libiscsi_tcp
scsi_transport_iscsi 22906 3 iscsi_tcp,libiscsi
fbdisk 18684 0
uvcvideo 57287 0
v4l2_common 11166 0
videodev 34879 1 uvcvideo
v4l1_compat 13447 2 uvcvideo,videodev
v4l2_int_device 2026 0
snd_usb_caiaq 17633 0
snd_usb_audio 61533 0
snd_usb_lib 15164 1 snd_usb_audio
snd_hwdep 4809 1 snd_usb_audio
snd_pcm_oss 35595 0
snd_mixer_oss 13108 1 snd_pcm_oss
snd_pcm 56634 3 snd_usb_caiaq,snd_usb_audio,snd_pcm_oss
snd_seq_oss 25585 0
snd_seq_midi 3874 0
snd_seq_midi_event 4566 2 snd_seq_oss,snd_seq_midi
snd_seq 43233 5 snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_rawmidi 15853 3 snd_usb_caiaq,snd_usb_lib,snd_seq_midi
snd_page_alloc 4715 1 snd_pcm
snd_seq_device 4739 4 snd_seq_oss,snd_seq_midi,snd_seq,snd_rawmidi
snd_timer 16026 2 snd_pcm,snd_seq
snd 37095 12 snd_usb_caiaq,snd_usb_audio,snd_usb_lib,snd_hwdep,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_seq,snd_rawmidi,snd_seq_device,snd_timer
soundcore 4763 1 snd
mac80211 127193 0
cfg80211 118284 1 mac80211
lib80211 3384 0
fnotify 26889 0
smbfs 60344 0
cifs 237914 0
nfs 263292 0
udf 86992 0
isofs 31577 0
ufsd 457675 0
ext4 233642 1
jbd2 44609 1 ext4
sysinfo 930 0
usblp 10604 0
usbhid 15886 0
mv_cesa 4323 0
aes_generic 34700 1 mv_cesa
dm_crypt 11755 0
dm_mod 56014 1 dm_crypt
raid456 55681 0
async_raid6_recov 3592 1 raid456
async_pq 2701 2 raid456,async_raid6_recov
async_xor 1115 3 raid456,async_raid6_recov,async_pq
async_memcpy 628 2 raid456,async_raid6_recov
async_tx 1287 5 raid456,async_raid6_recov,async_pq,async_xor,async_memcpy
raid6_pq 75781 2 async_raid6_recov,async_pq
xor 4859 1 async_xor
nls_utf8 954 0
nls_iso8859_2 3583 0
nls_cp850 3831 0
nls_cp437 4599 0
vfat 8512 0
fat 44947 1 vfat
appletalk 24361 0
psnap 1515 1 appletalk
llc 3018 1 psnap
hid 40232 1 usbhid
ext3 117088 2
jbd 37947 1 ext3

進行到這,算是完成 Optware 初始環境的建立,接下來我們會開始著手打造一台與眾不同的 QNAP 變形金剛。
2011-09-04 15:34 發佈
打造好基礎建設後,我們可以逐步打造變形金剛,首先先讓我們的TS-112能夠發聲唱歌吧,在過去要能讓embadded系統能讓外接裝置能夠順利運作,通常得費時尋找合適的核心模組(kernel module),或是下載原始碼再自行編譯去驅動這些裝置,所幸目前 QNAP 的 NAS 預先都已載入常用的驅動模組,所以當我們直接接上常見的USB周邊裝置幾乎都能直接被辨識及支援。



插入 USB 音效卡,確認一下系統是否已辨識出這張卡
# lsusb
Bus 001 Device 003: ID 1130:f211 Tenx Technology, Inc.
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002

跟前一篇比較多了一行 Tenx Technology, Inc. 這個就是我手上這張 USB 音效卡的資訊。

如何判斷音效卡是否已被支援?
# cat /proc/asound/cards
0 [default ]: USB-Audio - USB AUDIO
USB AUDIO at usb-orion-ehci.0-1.2, full speed

若未插上音效卡或音效卡無法被支援時,則顯示下列訊息
# cat /proc/asound/cards
--- no soundcards ---

接下來我們介紹兩套常用的播放軟體,一套是簡單輕巧透過命令列即可播放音樂的 madplay,另一套是可以主從架構的 MPD(Music Player Daemon),我們先從簡單的開始,首先安裝 madplay

MADPlay
# ipkg install madplay

安裝完即可馬上驗收播放MP3啦
# madplay -v --amplify=-42 /share/HDA_DATA/Multimedia/*.mp3

播放時可以透過鍵盤來控制,底下是按鍵對應功能說明:
P:暫停;按任意建繼續
S:停止;按任意鍵重新播放
F:播放下一首
B:播放上一首
T:切換播放時間顯示
+:音量放大
-:音量減少
Q:結束離開

MPD / MPC
另一套我們要安裝的是MPD,MPD是一套主從式架構,所以我們會同時安裝MPD(Daemon)及MPC(Client),使用程序上是透過MPC下指令給MPD播放音樂。
# ipkg install mpd mpc

編輯 /opt/etc/mpd.conf 內容參考如下
music_directory "/share/HDA_DATA/Multimedia"
playlist_directory "/share/HDA_DATA/Multimedia"
db_file "/share/HDA_DATA/Multimedia/mpd/mpd.db"
log_file "/share/HDA_DATA/Multimedia/mpd/mpd.log"
error_file "/share/HDA_DATA/Multimedia/mpd/mpd.error"
pid_file "/share/HDA_DATA/Multimedia/mpd/mpd.pid"
user "admin"
bind_to_address "127.0.0.1"
port "6600"
log_level "default"
audio_output {
type "oss"
name "Default OSS Device"
}
filesystem_charset "UTF-8"
id3v1_encoding "UTF-8"

操作方式:
建立音樂資料庫
# mpd --create-db /opt/etc/mpd.conf

把預設路徑下的音樂檔加入播放清單
# mpc ls | mpc add

播放
# mpc play

其他更詳細操作方式請參考:
http://linux.die.net/man/1/mpc
數位天堂 http://digiland.tw/
TS-112能夠唱歌後,滿足了嗎? 當然不夠,應該也得讓TS-112看得到吧,那就幫她安裝一個WebCAM囉。安裝WebCAM這會比安裝USB音效卡難度高一點,畢竟不是所有市售的WebCAM都能順利被TS-112所支援,所以先來做一點功課吧。

先看一下目前系統已預先掛載的視訊模組
# lsmod | grep videodev
videodev 34879 1 uvcvideo
v4l1_compat 13447 2 uvcvideo,videodev

系統已預載 uvcvideo 驅動模組,所以往 UVC 方向找 WebCAM 就對了。我們可以參考這個網站列出來符合UVC的廠牌及型號,做為購買依據。根據網路爬文的結果,筆者找了一款網拍價格約NT$500元左右的 Logitech C120。



拿到WebCAM後,就可進行驗證一下是否真的可以被支援
# lsusb
Bus 001 Device 005: ID 046d:080f Logitech, Inc.
Bus 001 Device 004: ID 1130:f211 Tenx Technology, Inc.
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002

跟上一篇比較又多了一行 046d:080f Logitech, Inc. 這個就是我手上這台 Logitech C120 WebCAM。

Motion
接下來我們安裝一套多重用途的視訊軟體 Motion,它具有移動偵測監控及影像串流播放的功能,功能非常強大。
# ipkg install motion
# cd /opt/etc
# cp motion-dist.conf motion.conf

安裝完編輯設定檔
# nano motion.conf

搜尋並修改下列相關設定
process_id_file /tmp/motion.pid
norm 1
output_normal off
ffmpeg_cap_new off
target_dir /share/HDA_DATA/Multimedia
webcam_localhost off
control_port 8082
control_localhost off
control_authentication admin:admin

改完後執行 motion
# motion

看看成果吧,先打開瀏覽器輸入網址 http://XXXX:8082/ (這裡的 XXXX 指的是 NAS 的IP),如果順利的話應該會跳出一對話框詢問帳號及密碼,此時請輸入上面設定的帳號、密碼(admin/admin)。完成驗證後,即可進入管理網頁。若要修改參數可以點進 All->config->list 會出現底下網頁,各項參數設定若有疑慮,可點選 help 官方網頁有詳細的輔助說明。


驗收畫面,緊張時刻來了,打開IE之外的瀏覽器(FireFox, Sarafi 皆可)輸入網址 http://XXXX:8081/ 即可看到 WebCAM 畫面。


支援 Surveillance Station
這還不是最屌的,以下是冒著生命危險發表這項用途,過去想在NAS上使用Surveillance Station,勢必還得加買個兩三千塊起跳的IP CAM。沒錯,窮人救星來了,Motion + WebCAM 即可號稱窮人版IP CAM,底下就來看看我們做的實驗。

首先當然要先啟用 NAS 上的 Surveillance Station


進到 Surveillance Station 設定 Camera
攝影機機型:Generic JPEG
HTTP URL:/video.cgi
埠號:8081
使用者名稱:admin
使用者密碼:admin

輸入完畢,按下套用完工
此時點擊右邊測試按鈕,若出現影像,恭喜您省下一台IP CAM的錢


測試錄影及回放功能皆可正常


以上是好用的Motion + WebCAM的組合,如果覺得實用的請加分按讚,感恩。據說本文發表後,各大IP CAM廠商紛紛下修今年下半年IP CAM的出貨量,各大賣場NAS專區搭售IP CAM的組合商品也紛紛下架,改搭WebCAM重新出發
數位天堂 http://digiland.tw/
LIRC
老是用 console 下指令,實在不方便,恐怕也嚇到不少想自己DIY改機的朋友,畢竟有些朋友看到命令列馬上打退堂鼓。接下來我們來嘗試幫NAS安裝遙控器,在Optware套件庫裡有一套LIRC(Linux Infrared Remote Control)可以在Linux環境裡支援紅外線(RF也行啦)遙控器操作使用,硬體部份我們在網拍裡找到了ATI出品的ATI Remote Control USB遙控器。不過,Optware裡的 LIRC 版本並未支援 ATI Remote,而且版本也比較老舊,需要自行把 ATI Remote 驅動程式編譯進來,所以本篇難度又更高了一點。



編譯之前,須安裝編譯環境,安裝過程約10分鐘左右,請耐心等候。
# ipkg install optware-devel

接著下載最新版 LIRC 原始碼,進行編譯工作
# mkdir -p /opt/etc/lirc
# cd /opt/etc/lirc
# wget http://sourceforge.net/projects/lirc/files/LIRC/0.9.0/lirc-0.9.0.tar.gz
# tar zxvf lirc-0.9.0.tar.gz
# cd lirc-0.9.0
# ./configure --with-driver=atilibusb
# make && make install

插入 ATI remote 接收器,確認系統能否辨識
# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 003: ID 046d:080f Logitech, Inc. Webcam C120
Bus 001 Device 009: ID 0bc7:0004 X10 Wireless Technology, Inc. X10 Receiver

參考這篇說明製作ATI RF遙控器按鍵的對應碼或者也可以參考遙控序號到這裡找相對應的按鍵對應碼。

搞定遙控器對應碼之後,下一步就是自行定義按鍵功能,底下我們試著把MPD的播放功能對應到遙控器的按鍵上。編輯 /opt/etc/lirc/lircrc 檔,內容如下
begin
prog = irexec
button = power
config = mpc clear
end

begin
prog = irexec
button = dvd
config = mpc ls | mpc add
end

begin
prog = irexec
button = play
config = mpc play
end

begin
prog = irexec
button = stop
config = mpc stop
end

begin
prog = irexec
button = pause
config = mpc pause
end

begin
prog = irexec
button = fforward
config = mpc next
end

begin
prog = irexec
button = rewind
config = mpc prev
end

begin
prog = irexec
button = volup
config = mpc volume +1
end

begin
prog = irexec
button = voldown
config = mpc volume -1
end

begin
prog = irexec
button = a
config = mpc repeat
end

載入LIRC
# /opt/etc/lirc/lircd -H atilibusb /opt/etc/lirc/lircd.conf
# /opt/etc/lirc/irexec -d /opt/etc/lirc/lircrc

如果順利的話,按按你的遙控器,你已經可以透過遙控器指揮 MPD 播放音樂了。

參考資料:
http://www.lirc.org/
http://lirc.sourceforge.net/remotes/atiusb/lircd.conf.atilibusb
數位天堂 http://digiland.tw/
進行到這裡似乎缺少了點什麼,對了,就是少個螢幕可以看看目前的系統狀態或者是播放音樂資訊。好吧,接下來這一篇我們來個大整合囉,除了整合前述的MPD、LIRC及Motion,我們還要再整合兩個螢幕,一個顯示文字界面,另一個顯示圖形界面,這樣才算夠瘋狂吧。

這裡所選用的兩台螢幕,一個是十多年前的 Palm PDA,當年叱吒風雲 Palm 如今宛如雞肋,食之無味,棄之可惜啊,如今正好派上用場,可謂是物盡其用。另一個是迷你數位相框,數位相框雖然是這幾年的新近的流行產物,但是當智慧型手機普及之後,數位相框的角色似乎已逐漸被取代,生命週期可能比 Palm PDA 更短,藉由本文或許有還有機會延續它的用途。

PalmOrb
安裝 Palm 上的顯示界面PalmOrb
這裡下載,這裡實驗的 PalmOrb 是採用 V1.1a4 版本,下載回來請透過 HotSync 安裝進你的 Palm 上。

底下是啟動 PalmOrb 的參考畫面


破解 ST2205U 數位相框韌體

參考國外 Doozan forum 改機網站,利用改寫 ST2205U 晶片的數位相框韌體,使其能夠接受電腦透過原有的 USB 界面控制播放特定訊息或影像。

# mkdir -p /opt/etc/lcd4linux
# cd /opt/etc/lcd4linux
# wget http://www.neophob.com/files/st2205tool-1.4.3.tar.gz
# tar xvfz st2205tool-1.4.3.tar.gz
# cd st2205tool && make && make install

寫入破解韌體
# cd st2205tool
# ./hackfw.sh /dev/sdX

這裡因不同型號數位相框有不同的流程,詳細流程請參考LCD screen for your dockstar (cheap! <$5)

LCD4Linux
這裡我們使用的套件是 LCD4Linux,這一套通常是提供給 Embedded 系統驅動將訊息顯示在簡易的LCD小螢幕上,有興趣的朋友可參考其官網上的介紹說明。不過還是老問題,因為 Optware 裡的 lcd4linux 套件版本一直沒有更新,也沒有支援 MPD plugin,所以我們還是得自己動手編譯吧。

下載最新版 lcd4linux 及納入 MPD plugin 編譯
# mkdir -p /opt/etc/lcd4linux
# cd /opt/etc/lcd4linux
# wget http://ssl.bulix.org/projects/lcd4linux/raw-attachment/wiki/Download/lcd4linux-0.11.0-SVN.tar.bz2
# tar xvfj lcd4linux-0.11.0-SVN.tar.bz2
# cd lcd4linux-0.11.0-SVN
# ./configure --with-plugins=mpd
# make

製作兩個 lcd4linux 的 config 檔,一個是顯示MPD播放時的音樂資訊。

編輯 lcd4mpd.conf 內容如下
Display PalmOrb {
Driver 'MatrixOrbital'
Model 'LK204-25'
Port '/dev/ttyUSB0'
Speed 19200
Icons 1
}

Plugin MPD {
enabled 1
server 'localhost'
port 6600
# password 'secret'
minUpdateTime 500
}

#
# display artist and album, scrolling
#
Widget mpd-combo {
class 'Text'
expression mpd::artist() . '/' . mpd::title()
width 20
align 'A'
speed scroller
update tack
}

#
# display current song id and number of total song
#
Widget mpd-posid {
class 'Text'
expression mpd::getMpdPlaylistGetCurrentId().' of ' .mpd::getMpdPlaylistLength()
width 11
align 'L'
update tack
}

#
# display 30s the mpd uptime (ex. UP:2d03h32m) then 30s the current song id and number of total songs (ex. 267 of 734)
#
Widget mpd-toggler {
class 'Text'
(mpd::getMpdUptime()%60)<31 ? ('UP:'.mpd::formatTimeDDHHMM( mpd::getMpdUptime() ) ) : (mpd::getMpdPlaylistGetCurrentId().' of '.mpd::getMpdPlaylistLength()) )
width 11
align 'L'
update tack
}

#
# display playerstate (play, pause, stop, unknown)
#
Widget mpd-playerstatus {
class 'Text'
mpd::getStateInt() == 1 ? 'PLAYING' : '').(mpd::getStateInt() == 2 ? 'PAUSED ' : '').(mpd::getStateInt() == 3 ? 'STOPPED' : '').(mpd::getStateInt() == 0 ? 'UNKNOWN' : '')
width 7
align 'L'
update tack
}

#
# get repeat/random
# example: REP/RND, REP/---, ---/RND, ---/---
#
Widget mpd-reprnd {
class 'Text'
mpd::getRepeatInt()>0 ? 'REP' : '---') . '/' . (mpd::getRandomInt()>0 ? 'RND' : '---')
width 7
align 'L'
update tack
}

#
# display track position example: <00:48/04:33>
#
Widget mpd-tracktime {
class 'Text'
expression mpd::formatTimeMMSS( mpd::elapsedTimeSec() ).'/'.mpd::formatTimeMMSS( mpd::totalTimeSec() )
width 11
align 'L'
update tack
}

#
# display uptime of mpd, example: <0d06h51m>
#
Widget mpd-uptime {
class 'Text'
expression 'UP:'.mpd::formatTimeDDHHMM( mpd::getMpdUptime() )
width 11
align 'L'
update 10000
}

#
# small playbar and track time
#
Widget smallMP3Bar_part1 {
class 'Bar'
expression mpd::elapsedTimeSec()
length 13
min 0
max mpd::totalTimeSec()
direction 'E'
style 'H'
update tack
}

#
# display volume
#
Widget mpd-vol {
class 'Text'
expression 'VOL:'.mpd::getVolume()
width 7
align 'R'
update tack
}

Widget smallMP3Bar_part2 {
class 'Text'
# expression '/'.mpd::formatTimeMMSS( mpd::totalTimeSec() )
expression mpd::getMpdPlaylistGetCurrentId().'/'.mpd::getMpdPlaylistLength()
width 7
update tack
align 'R'
}

#
# display volume
#
Widget mpd-vol {
class 'Text'
expression 'VOL:'.mpd::getVolume()
width 7
align 'R'
update tack
}

Widget mpd-bitrate {
class 'Text'
expression mpd::bitRate().'k'
width 6
update tack
align 'L'
}

# example:
# +--------------------+ +--------------------+
# |ad/It's A Fire | | Portishead/It's A F|
# |*** /03:48| |********* /03:48|
# |REP/RND PLAYING 128k| |REP/RND PLAYING 128k|
# |UP:2d03h33m VOL:100| |267 of 734 VOL:100|
# +--------------------+ +--------------------+

Layout L20x4 {
Row1 {
Col1 'mpd-combo'
}
Row2 {
Col1 'smallMP3Bar_part1'
Col14 'smallMP3Bar_part2'
}
Row3 {
Col1 'mpd-reprnd'
Col9 'mpd-playerstatus'
Col17 'mpd-bitrate'
}
Row4 {
# Col1 'mpd-toggler'
Col1 'mpd-tracktime'
Col14 'mpd-vol'
}
}

Variables {
t_onesec 1000
t_500m 500
tack 500
tick 100
tacku 100
scroller 300
}

Display 'PalmOrb'
Layout 'L20x4'

另一個是要顯示系統即時效能訊息。

編輯 lcd4sys.conf 內容如下
Display PalmOrb {
Driver 'MatrixOrbital'
Model 'LK204-25'
Port '/dev/ttyUSB0'
Speed 19200
Icons 1
}

Widget NAS {
class 'Text'
expression 'QNAP TurboNAS TS-112'
width 20
align 'C'
update tick
}

Widget CPU {
class 'Text'
expression uname('machine')
prefix 'CPU '
width 9
align 'L'
update tick
}


Widget RAM {
class 'Text'
expression meminfo('MemTotal')/1024
postfix ' MB RAM'
width 11
precision 0
align 'R'
update tick
}

Widget Busy {
class 'Text'
expression proc_stat::cpu('busy', 500)
prefix 'Busy'
postfix '%'
width 10
precision 1
align 'R'
update tick
}

Widget BusyBar {
class 'Bar'
expression proc_stat::cpu('busy', 500)
expression2 proc_stat::cpu('system', 500)
length 10
direction 'E'
update tack
}

Widget Eth0 {
class 'Text'
netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024
prefix 'eth0'
postfix ' '
width 10
precision 0
align 'R'
update tick
}

Widget Eth0Bar {
class 'Bar'
expression netdev('eth0', 'Rx_bytes', 500)
expression2 netdev('eth0', 'Tx_bytes', 500)
length 14
direction 'E'
update tack
}

Layout Default {
Row1 {
Col1 'NAS'
}
Row2 {
Col1 'CPU'
Col10 'RAM'
}
Row3 {
Col1 'Busy'
Col11 'BusyBar'
}
Row4 {
Col1 'Eth0'
Col11 'Eth0Bar'
}
}


Display 'PalmOrb'

Layout 'Default'

Variables {
tick 500
tack 100
}

最後是將WebCAM畫面擷取,轉換解析度後顯示在 ST2205 數位相框,每秒鐘播放一張。
webcam.sh
#!/bin/bash
if [ -n "$1" ]
then
URL=$2
DEV=/dev/sda
SETPIC=../setpic/setpic
while true; do
wget $URL -q -O pict.jpg
convert -gravity Center -resize x128 -resize '128x<' -crop 128x128+0+0 -level 0%,100%,0.6 +repage pict.jpg pict.png
$SETPIC $DEV pict.png >/dev/null 2>/dev/null
sleep $1
done
else
echo 'Usage: webcam.sh [delay] [url]'
fi

全員大集合,總共接了5個USB裝置。
# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 006: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 001 Device 004: ID 1403:0001 Sitronix Digital Photo Frame
Bus 001 Device 005: ID 0bc7:0004 X10 Wireless Technology, Inc. X10 Receiver
Bus 001 Device 007: ID 046d:080f Logitech, Inc. Webcam C120
Bus 001 Device 008: ID 1130:f211 Tenx Technology, Inc. TP6911 Audio Headset

整合測試
底下是整合後的測試的錄影,業餘水準如果傷眼請多多包涵


改機總計費用
USB 音效卡:NT$199元
WebCAM:NT$500元
ATI Remote遙控器:NT$500元
Palm PDA:NT$500元
迷你數位相框:NT$300元
合計NT$1999元,還不到兩千元台幣,但是改機的樂趣:無價!

後記
本篇改機從構想到完成,時間有點倉促,有些實作網路上還真找不到任何實例可供參考,所以花了很多時間在編譯、測試、修改三步驟無止境迴圈,因截稿在即匆匆發文,遣詞用字上應該還有諸多不順之處,只能日後在慢慢修飾了
數位天堂 http://digiland.tw/

Aven138 wrote:
報名參加了QNAP舉...(恕刪)


早上還在想已是截稿最後一天, 為何 Aven138 兄還未出手, 大師出手果然把 QNap 改裝推向很難超越的門檻,
FB: Pctine

pctine wrote:
早上還在想已是截稿最...(恕刪)

大師不敢當,pctine兄近期發表諸多實際研究測試,小弟受益不少,您才是NAS板的專家
數位天堂 http://digiland.tw/
厲害~~
目前看過特務Q 文章中~~最有深度的~~
尤其webcam~~的應用~~
真乃神人也… ,應Aven大大所說,五分俸上…

不過,感覺給五分還不夠,這篇值得十分吶!

厲害,真是厲害!
Aven138 wrote:
報名參加了QNAP舉...(恕刪)


這個真的太厲害...專業水準啊...
  • 4
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?