----------

如果說,一再的錯過,是為了彼此更好的未來

那麼,當時的錯過,間接促使我們長大。
正因為這些不完美,於是我們學習、得到教訓,然後成長。最終,彼此都變得更好。

而到此時,那些放得下與放不下的,皆已成過往雲煙,埋藏於心裡,靜靜封存著
若我們三生有幸,將那些錯綜盤結解開,隨之而來的獎賞,正是發自於心中的一抹微笑。

僅以此文,紀念那些我們最終未能如願、即快速失去的青春。
那當下足以改變人生,但現在成為微笑的過去。

「也許你的告白,我會陪伴著你一起走」妳這麼說。

我也這麼認為。


stevennick 發表在 痞客邦 留言(1) 人氣()

After clone a CentOS VM, there are network & hostname need to be update.

Update hostname:

  1. /etc/hosts
  2. /etc/sysconfig/network
  3. # hostname <name>

Update NIC:

  1. /etc/udev/rules.d/70-persistent-net.rules: delete old NIC information
  2. /etc/sysconfig/network-scripts/ifcfg-xxx: delete UUID line and update HWADDR
  3. # start_udev
  4. #uuidgen >> /etc/sysconfig/network-scripts/ifcfg-xxx
  5. /etc/sysconfig/network-scripts/ifcfg-xxx: update UUID by add "UUID="
  6. # service network restart

Reference:

http://www.ichiayi.com/wiki/tech/linux_hostname

http://linuxtoolkit.blogspot.tw/2012/10/updating-udev-configuration-on-centos.html

stevennick 發表在 痞客邦 留言(0) 人氣()

這個週末,大概是繼去年畢業後,最不一樣的一個生日。

人生的很多事件,都剛好在這個時間內發生:畢業後滿一年、第二階段服役期滿。我知道世界不會因此改變,生活仍然會繼續,只是因為這個週末太特別了,所以記錄下來,就成了最好的紀念。

先說說這一年來的改變吧!到了新環境,認識了不同朋友;住在新城市,體驗工作人生;免除家裏扶助,卻多了幾分責任。雖說我其實還不用負擔些什麼,但還是可以體認到光陰有限,懂得要好好把握。另一方面,某些事情沒能在這段時間內改變,是比較令人惋惜的;不論是在個性、學識、還是人際上,我想我都還有很大的努力空間。

這些日子以來,支持我的人們,你們辛苦了!也許有些時候,我並不如想像中的那樣完美,但正因為有你們存在,我才得以保有熱忱繼續下去。感謝我的家人,總是耐心等待我成長茁壯,並始終支持我的決定。感謝我的愛人,在經歷許多波折後,仍然願意與我共創未來。感謝我的朋友們,在熱情快要熄滅的時候,幫助我恢復小太陽的光輝。我也必須感謝那些與我疏離的朋友們,這讓我看清自己的錯誤,讓我有機會去改正它們,希望有朝一日我們可以重新成為朋友。

過了這一天,自己就要往下個階段邁進了。縱使工作的日子有些枯燥乏味,但心中的那個夢想仍然存在。我很慶幸在工作即將一年後,並沒有被日常生活磨掉所有熱情;相反地,還能有機會找到生活中的平衡點。有些夢想既然無法在去年完成,那就在今年實現它吧!

今年生日的三個願望:
1. 祝福朋友們未來一年皆事事如意
2. 祝福自己如期實現心中的願望(清單)
3. :)

stevennick 發表在 痞客邦 留言(0) 人氣()

  經過眾版友的交涉,網樂通總算放出自己的kernel source了!

  不過,既然網樂通本身使用了Linux,依照開放源碼的授權條款來說,它本來就該無償提供原始碼給其他人下載。

  下載頁面在 https://www.nextvod.com.tw/tw/yiwangle/opensource.jsp ,希望這個原始碼能幫助詭異的RT73無線網卡乖乖工作。

stevennick 發表在 痞客邦 留言(1) 人氣()

2011-02-20_215458

以下內容已經同步發表於「批踢踢實業坊」NextVOD看板。此內容為我在研究網樂通硬體與驅動的結果。

NextVOD USB wireless device kernel modules package
For firmware version 103
Author: Ciou Stevennick stevennick(at)ms32.url.com.tw
WARNING:This package is not designed for normal user, use at your own risk!

警告:私自修改網樂通將有可能會毀損機器,並同時喪失保固或被要求賠償最高3000元新台幣!本程式並未經過完整測試,且現階段的網路驅動程式尚未能與網樂通介面完全整合,一般使用者請勿輕易嘗試!

這是甚麼
======
這是使用於網樂通機器上面的無線網卡驅動程式模組,並且包含了一些可用的工具程式與自動啟動執行檔,使得網樂通可以使用更多不同類型的無線網路卡進行連線。另外,為了方便程式測試,安裝本模組將會自動啟動正常模式下的telnet伺服器,使用者將可透過telnet指令遠端登入網樂通的命令模式介面。

環境限制
======
1. 可能可以支援的網路卡(以晶片組區分):

Realtek RTL8712/8187/8188/8191/8192SU
Marvell 8xxx/8388
ZyDAS ZD1201/1211
Ralink RT73

其中,rt73核心模組尚有部份問題,可能無法正常工作。
另外,因為個人設備有限,僅有Realtek的核心模組測試過確定可以動作。若有人願意商借更多相關網卡供測試使用,未來版本(若有的話)將有可能擴充支援更多無線網卡。
部份的核心模組有修改原始程式碼。相關的修改將會在作者網站上提供。

2. 基於網樂通系統的先天限制,在安裝模組時與第一次網樂通進行冷開機時,可能會需要使用有線網路進行網路環境設定。使用者必須在網樂通的網路安裝設定畫面內,將區域網路設定為靜態環境,令網樂通跳過有線網路的DHCP搜尋。

3. 韌體更新後,需重新安裝模組才能再次發揮功能。另外,也不保證本驅動模組能在未來版本上的韌體正確執行。

4. 由於網樂通無法管理ralink以外的無線網路卡,因此這個模組中包含了wpa_supplicant以及工具程式wpa_cli來取代網樂通內建的管理程式,另外也包含了ifup/ifdown指令可配合使用。使用者需要手動設定 wpa_supplicant 設定檔案(安裝後,路徑在 /etc/wpa_suplicant/wireless.conf),加入正確的無線基地台名稱、加密方式,密碼等無線網路參數,才能使wpa_supplicant正常工作。
在本安裝內,已經包含了兩個範例檔案可供使用,分別為wireless.conf與plaintext.conf,提供WPA/WPA2-PSK與無加密的組態供設定參考。詳細的設定指令,請參考下面的說明連結。
Gentoo 的說明文件(中文)
http://www.gentoo.org/doc/zh_tw/handbook/handbook-x86.xml?part=4&chap=4
wpa_supplicant作者網站 (英文)
http://w1.fi/wpa_supplicant/

5. 所有設定檔案僅針對網路介面 wlan0 做組態設定,若你掛入的網路介面不是這個名稱,則有兩種方式讓這個集合可以重新工作:
1) 修改/etc/udev/rules.d/99-udev-net-test.rules 檔案,取消第六行的註解後重新開機,或者
2) 修改本集合在/etc/下的所有相關設定檔案,將wlan0改成正確的網路介面名稱。
要查詢你的網路介面是否正確工作或取得介面名稱,請在安裝集合以後,於命令模式下輸入下列指令

cat /proc/net/wireless

6. 提供的安裝流程,僅適用於自動取得IP位址的無線網路環境,並且安裝時需要使用網路(下載安裝檔)。
若要使用隨身碟進行離線安裝,請自行下載安裝步驟第三部份的檔案,參考網樂通改機一文中,掛載隨身碟的說明。

安裝步驟
======
以下為網路安裝步驟。

1. 請先取得網樂通的命令模式介面控制權。並且,請確定網樂通可以連上網路。要取得控制權,最簡單的方法就是拆機器,並使用內部的Console port與電腦連接。
另外,也請確定網樂通運作在正常模式(即螢幕畫面為頻道選單)而非韌體更新模式下。

2. 切換到臨時資料夾。此例為/tmp

cd /tmp

3. 下載並驗證安裝檔案

wget http://dl.dropbox.com/u/18601667/wlanhack_test.tar.gz
md5sum wlanhack_test.tar.gz

請至網站上確定你的檔案驗證碼與網路上公佈的一致。

4. 解開安裝檔案,並且安裝基本程式

tar -xzf wlanhack_test.tar.gz
cd wlanhack_test
./install

5. 設定你的無線網路環境

./get_sample_config
vi wireless.conf

進入vi後,按下鍵盤i鍵後開始修改設定值。可以使用方向鍵與倒退鍵
完成設定後,依序按下ESC鍵、Shift + ;、w鍵、q鍵與Enter 離開 vi

如果不小心改爛設定值,可以重作第五步驟。vi操作說明操作請上網搜尋。
欄位說明,請參照環境限制內,關於wpa_supplicant的部份。

6. 安裝設定值

./config_install

7. 測試你的設定
請先將欲使用的無線網路卡接上網樂通,然後輸入下面指令開始測試:

./test_install

這個指令將會重新啟動udev、重新載入網路卡的核心模組、並啟動wpa_supplicant
來進行測試連線。若有成功驅動網路卡且設定正確,最後你應該會看到類似下面的資訊:
(請注意:訊息的出現順序可能會不太一樣)

Selected interface 'wlan0'
bssid=00:xx:xx:xx:xx:xx
ssid=My ssid here
id=0
pairwise_cipher=TKIP
group_cipher=TKIP
key_mgmt=WPA-PSK
wpa_state=COMPLETED
ip_address=192.168.1.5

Inter-| sta-| Quality | Discarded packets | Missed | WE
face | tus | link level noise | nwid crypt frag retry misc | beacon | 22
wlan0: 0000 96. 96. 0. 0 0 0 0 0 0

若沒有看到ip_address欄位有數字出現,則表示第五步驟的設定有誤,請回到第五步驟重新確定設定值。若你的interface欄位wlan0而是其他代號,表示你需要套用環境限制內第五項說明的修正。若你的interface欄位沒有任何東西,則表示網路卡驅動失敗。您可以考慮解除安裝本集合,並等待未來更新。

若要套用環境限制內第五項說明的修正,請執行下面的指令

vi /etc/udev/rules.d/99-udev-net-test.rules

使用方向鍵移動到第六行開頭,按一下x鍵刪除#字號
完成設定後,依序按下ESC鍵、Shift + ;、w鍵、q鍵與Enter 離開 vi

8. 清理安裝檔案

./cleanup

9. 將網樂通重新開機,設定靜態網路位址

請保持無線網路卡與網路線皆插在機器上並且重新開機。重新開機後,進到網路狀態內將網路設定值抄寫下來。
然後,請進入安裝設定中的區域網路設定,將網路設定值使用手動設定方式,手動加入一個合法的IP位址、子網路 遮罩、通訊閘以及網域名稱伺服器位址。您可以參考接上網路線時,網路狀態內所顯示的相關內容作相同設定。這個步驟的目的是要避免網樂通執行動態IP查詢,實際上網樂通還是會使用無線網路的設定值來連線。
設定完成後,按下設定畫面的確定按鈕。請確定螢幕顯示連線成功訊息。離開設定畫面後,移除網路線並重新開機。

10. Enjoy your NextVOD!

Versions
========
2011/02/20 測試版發布
2011/02/21 修改測試程式

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

1. 要設定正確的核心起始位置、Offset與正確的系統頻率。當然必要的Device Driver也要記得掛入。我已經改出可用的 Kernel config(當然也加入了一些修改),可以到這裡下載: http://0rz.tw/r3LP9

2. 網樂通的rootfs是放在USB Stick上的,但是USB Stick要配置sd分割區之前,會經由USB probe到SCSI子系統上,再由核心找出正確的檔案系統以後才會產生sdX的資訊。但是,整個識別過程需要一些時間,若沒有做核心Hack,核心的init就會在sdX來不及產生前就嘗試掛載它,這會導致kernel pantic:


VFS: Cannot open root device 'sda2' or unknown-block(8,2)
Please append a correct 'root=' boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,2)


解決方法有兩種,我們可以在u-boot時,修改內建的bootargs,在尾端加上rootdelay=xx,xx表示要init等待的秒數,一般來說五秒足矣。若有些裝置(例如SD讀卡機或是硬碟等)需要更長的時間,就把秒數增加就好。
另外一種就是kernel hack,在核心程式碼 init/do_mounts.c 內,prepare_namespace() 函式實作內部加上delay:


if (root_delay) {
/* ... */
}
/* Stevennick Hack: force wait 5 seconds for device becomd ready. */
/* See https://blueprints.launchpad.net/ubuntu/+spec/kernel-boot-usb-roodelay */
ssleep(5);

/* ...*/


然後重新編譯kernel,應該就可以避免掉這個問題。

當然,由於我沒有網樂通的JTAG connector可用,在怕把u-boot弄壞的情況下,實在不敢下saveenv指令,不然,直接加上rootdelay參數,其實是比較好的解法。

若使用網樂通內部的核心開機,我們也會發現核心在掛載系統前會很明顯的暫停了一會,或許正是等待usb裝置就緒吧!

stevennick 發表在 痞客邦 留言(3) 人氣()




這部影片所展示的內容,其實是我在上學期的一門計畫結果。原本的計畫結果是沒有錄製影片的,但因為在相關課程的期末簡報上,老師下了最好有展示影片的期望,這部影片也才因此誕生。而就在最近,生產PXA310的廠商打電話來說內部的工程師最近看到這一段影片,我才想起來我曾經做過這個計畫...

系統的架構其實很簡單,就是兩個不同的平台整合(Marvell PXA310嵌入式開發平台上跑Linux/Android,還有TI CC2530開發版,上面純跑8051而非Z-Stack)在一起,中間使用Serial 連在一起。因為Linux上的ZigBee接收端,變成標準的Serial console,所以等於是我只要寫操作Serial的程式就可以控制ZigBee了。不過,為了方便,我是在Serial上加了一層網路服務程式,讓ZigBee資料可以透過本機端Socket進行傳輸,所以那個Android Demo UI其實是個連到本機Socket的網路應用程式。也因為資料走網路的關係,只要嵌入式平台有連上網際網路,那個Android UI程式是可以透過遠端啟動的。

但可惜的是,那時候的準備時間並不充裕,相關的程式實做僅到了可以執行(Just work)的階段。若是往後有機會從事這方面的發展,我想我應該會做的比現在要再好上許多。

stevennick 發表在 痞客邦 留言(1) 人氣()

  這裡純粹紀錄做過的事情,不保證一定成功。

環境準備:

  首先,先Google STLinux 下載2.3的ISO,另外我的電腦是跑Ubuntu,必須使用更新的install script。把下載的ISO解開複製到某個目錄內,把install用剛剛下載的新版檔案蓋掉。

  先用apt-get安裝rpm套件,再切換到superuser啟動 install script。安裝後的內容會放在 /opt/STM/STLinux-2.3 裡面。

  先到 host/bin 內執行 stmyum update 升級安裝,這樣就會取得最新的 kernel 2.6.23.17 source 與更新後的套件,由於網樂通剛好用相同版號的kernel,剛好省下了自己找kernel的麻煩。

設定環境:

  將適當的PATH加入環境變數中,這樣make才找得到STLinux的toolchain。

  然後,複製STLinux的source tree到自己的working directory,就可以開始工作了。

Start working:

  我們要先找出正確的平台組態,所以先看看目前的 kernel支援哪些平台:

  make ARCH=sh CROSS_COMPILE=sh4-linux- help

  在Architecture specific targets中,找到了符合網樂通平台的pdk7105,所以直接下pdk7105_defconfig就可以產生可用的.config文件:

  make ARCH=sh CROSS_COMPILE=sh4-linux- pdk7105_defconfig

  接下來,就可以修改核心選項,加入我要的RT73無線網卡Driver(跟一堆東西):

  make ARCH=sh CROSS_COMPILE=sh4-linux- menuconfig

  然後編譯kernel:

  make ARCH=sh CROSS_COMPILE=sh4-linux- vmlinux

  有四核心的電腦,下編譯指令時加上 -j4可以節省編譯時間。

開機測試:

  首先,我們要先確定網樂通的硬體配置為何,這可以很簡單的透過u-boot輸出訊息取得:

## Booting image at 80000000 ...
Image Name: Linux 2.6
Image Type: SuperH Linux Kernel Image (gzip compressed)
Data Size: 2459057 Bytes = 2.3 MiB
Load Address: 80800000
Entry Point: 80801000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
CMDLen=169
There is "hwaddr" keywords! Position=95
Read MacAddr=24cf21b0ab14

[iptv_kernel]:Starting kernel console=ttyAS0,115200 root=8:2 rootfstype=ext3 rw rootflags=data=journal nwhwconf=device:eth0,hwaddr:24:cf:21:b0:ab:14 phyaddr:0,watchdog:5000 mem=120M bigphysarea=2048 - 0x00000000 - 0 ...

  其中,Load Address跟Execute Address(即Entry Point)要記下來,等下會用到。
  另外,也可以下pri指令,就可以發現u-boot其實是讀入隨身碟的第二磁區根目錄內的vmlinux.ub來開機。

PDK7105> pri
bootdelay=0
baudrate=115200
ethaddr=DE:EA:FF:FF:01:01
board=pdk7105
monitor_base=0xA4000000
monitor_len=0x00040000
monitor_sec=1:0-1
load_addr=0x80000000
ipaddr=192.9.150.61
serverip=192.9.150.67
bootdelay=0
update_uboot=usb start;fatload usb 0 80000000 u-boot.bin;update_spi_uboot
unprot=protect off $monitor_sec
update=erase $monitor_sec;cp.b $load_addr $monitor_base $monitor_len;protect on $monitor_sec
ethaddr=12:34:56:78:06:BD
stdin=serial
stdout=serial
stderr=serial
bootargs=console=ttyAS0,115200 root=8:2 rootfstype=ext3 rw rootflags=data=journal nwhwconf=device:eth0,hwaddr:10:08:E2:12:06:BD phyaddr:0,watchdog:5000 mem=120M bigphysarea=2048
bootcmd=ext2load usb 0:2 80000000 vmlinux.ub; bootm 80000000

Environment size: 715/65532 bytes

  所以如果要做一個相容核心的話,我們還要做一些指令,讓核心變成可以在網樂通上開機的vmlinux.ub:

  sh4-linux-objcopy -O binary vmlinux vmlinux.bin
  gzip --best --force vmlinux.bin
  mkimage -A sh -O linux -T kernel -C gzip -a 0x80800000 -e 0x80801000 -n "Linux 2.6" -d vmlinux.bin.gz vmlinux.ub

  其中,-a 跟 -e 後面的選項就是剛剛開機訊息裡面提到的Load Address跟Execute Address實際位址。

  在不修改任何設定值的情況下,編譯好的kernel只有1.7MB,跟網樂通內附的kernel有很大差距。不過只要編譯過的kernel可以動就好,畢竟我的重點是編譯Wifi Driver Module。

stevennick 發表在 痞客邦 留言(3) 人氣()

對於End user來說,網樂通是個挺不錯的免費影音大集合(至少到2011/3/31以前都是如此),不過作為一個CSIE背景出身的人,對於具有256M記憶體/8G USB Flash還有Ethernet跟USB Port 又可以街電視的機器,不拿來做點嘿嘿應用就太可惜了...

所以,經過了一個多月的等待,拿到機器的第一件事就把它給砸了拆了(好孩子不要學),先把 8G Flash 備份後就接上Serial Console看看有啥搞頭!

機器是跑 STLinux 2.3 ,kernel 2.6.23.17_stm23_A18B-PDK7105-32BITS-A18B,pdk7105-sdk/STx7105 ver 3.x 還外帶u-boot,這下還真的很有搞頭。美中不足的是,裡面的啟動script亂成一團,走了好多冤枉路 花了整個晚上才搞清楚網樂通實際上是怎麼正常啟動的...

目前Hacks:

[sda2]/etc/init.d/fdtv-init.sh 裡面加入

/sbin/udhcpc -i eth0 -nq -t 3 -T 15 &
/usr/sbin/telnetd -l /bin/sh &

就可以用telnet連進網樂通,裡面也有busybox所以有wget可用,但若要寫程式進去,在Host弄個STLinux rootfs 再透過NFS餵給網樂通應該會比較方便

Anyway,最近論文比較忙沒空玩它,先記下來一些資源跟work,等未來老闆開課時再忙裡偷閒玩玩好了...

資源區:
網樂通拆解 http://3c.msn.com.tw/View.aspx?ArticleID=54883&pageIndex=1
STLinux: http://www.stlinux.com/
H/W Spec & dmesg: https://gist.github.com/753181/ecbc2946ca83d519b94374242bceda802a6db0d4
HackingThursday: http://groups.google.com/group/hackingthursday
(Keyword: nextvod)

Porting:
也許來個strace?
strace: http://sourceforge.net/projects/strace/

無線網卡目前只支援 Ralink RT3070STA,而且還是用打模組的方式加進kernel中。我對RT73的Driver比較有興趣,要是能把Driver編好打進去,網樂通就可以用便宜的華碩的無線網卡了。


stevennick 發表在 痞客邦 留言(7) 人氣()

  一直以來,無名小站提供的Blog服務都有品質直線下降的趨勢,還記得剛開始使用無名時,網誌跟系統的功能都很不錯,在當年Movable Type盛行的時候(那時Wordpress還不是很完整),甚至還有許多創新的服務都由無名開始;但在無名小站經過一連串事件變成有名大站與丁丁大站後,我就越來越覺得無名在向下沉淪。

  現在的無名Blog服務,網誌側攔不能放置JavaScript就算了(這個問題導致我的專題作品 TravelLog 無法繼續在無名網誌內使用),最近無名更大逆其道的把網誌備份功能給刪除。這代表的意義是:無名將我們這些部落客的心血結晶,也就是文章,視為他們持有的資產,妳以後若是需要保存過往的心血,就再也找不到方法可以方便的取回你的努力。最後的結果是,你的努力將被關在Yahoo!台灣旗下的無名監牢內,失去資訊流通跟Web2.0所倡導的資訊自由特性,終其一生都很難在未來將你以前的努力妥善保存。

  因此,我選擇了離開丁丁大站,並趁網誌備份即將關閉之際,將所有內容移動至痞客邦上。但由於目前在無名的社交圈還沒有轉移至痞客邦,所以我在無名的帳號會繼續保留,當然各位訂閱的無名RSS仍然有效,只是您會收到「我已經搬家」的畫面。之後痞客邦會成為我的主要Blog,各位看倌可以修改您的RSS訂閱(在側攔有連結),以便能收到最新的文章內容。

  當然,Blog留言仍然需要會員才能留言,因此還沒有帳號的朋友們,趕快趁現在申請一個帳號以備未來使用吧!(這句話有偷打廣告的嫌疑...)

  PS:各位可以看到,我有使用Facebook以及Plurk,若您也有使用這兩個服務,請加入我為朋友,會更貼近我的生活喔!

stevennick 發表在 痞客邦 留言(0) 人氣()