<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1371939233663504020</id><updated>2011-12-11T06:47:57.298-08:00</updated><category term='bike'/><category term='m2m'/><category term='design'/><category term='embedded'/><category term='music'/><category term='foss'/><category term='mood'/><category term='project management'/><category term='android'/><category term='tech'/><category term='art'/><category term='openmoko'/><title type='text'>moments notice</title><subtitle type='html'>just blog life</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-1579134363353220996</id><published>2011-11-16T04:48:00.000-08:00</published><updated>2011-12-11T06:47:57.311-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android 4.0 r1 CTS diff  (with Android 2.3 CTS)</title><content type='html'>Some lazy diff shows Android 2.3 vs. 4.0 CTS, just for memo. People interested in CTS 4.0 r1 could:&lt;br /&gt;&lt;br /&gt;1. download AOSP for ICS 4.0&lt;br /&gt;2. make SDK&lt;br /&gt;3. Check out/host/linux-x86/cts for CTS and CtsVerifier binary&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tonytu.com/android/doc/android-cts3-4-diff.txt"&gt;git diff&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tonytu.com/android/doc/android-cts3-4-log.txt"&gt;git log&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;android.tests.sigtest 1&lt;br /&gt;android.apidemos.cts 1&lt;br /&gt;android.acceleration 6&lt;br /&gt;android.accessibilityservice 19&lt;br /&gt;android.accounts 28&lt;br /&gt;android.admin 13&lt;br /&gt;android.app 298&lt;br /&gt;android.bluetooth 9&lt;br /&gt;android.content 575&lt;br /&gt;android.database 243&lt;br /&gt;android.dpi 9&lt;br /&gt;android.dpi2 0&lt;br /&gt;android.drm 11&lt;br /&gt;android.example 2&lt;br /&gt;android.gesture 29&lt;br /&gt;android.graphics 874&lt;br /&gt;android.hardware 37&lt;br /&gt;android.jni 61&lt;br /&gt;android.location 86&lt;br /&gt;android.media 252&lt;br /&gt;android.ndef 1&lt;br /&gt;android.net 97&lt;br /&gt;android.os 302&lt;br /&gt;android.permission2 10&lt;br /&gt;android.permission 127&lt;br /&gt;android.preference 4&lt;br /&gt;android.provider 135&lt;br /&gt;android.renderscript 154&lt;br /&gt;android.sax 4&lt;br /&gt;android.security 11&lt;br /&gt;android.speech 9&lt;br /&gt;android.telephony 52&lt;br /&gt;android.text 600&lt;br /&gt;android.theme 0&lt;br /&gt;android.util 82&lt;br /&gt;android.view 610&lt;br /&gt;android.webkit 167&lt;br /&gt;android.widget 986&lt;br /&gt;android.core.tests.libcore.package.com 5&lt;br /&gt;android.core.tests.libcore.package.dalvik 50&lt;br /&gt;android.core.tests.libcore.package.libcore 3468&lt;br /&gt;android.core.tests.libcore.package.org  1907&lt;br /&gt;android.core.tests.libcore.package.sun 0 2&lt;br /&gt;android.core.tests.libcore.package.tests 2643&lt;br /&gt;android.core.vm-tests 3100&lt;br /&gt;android.tests.appsecurity 6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-1579134363353220996?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/1579134363353220996/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=1579134363353220996' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1579134363353220996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1579134363353220996'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/11/android-40-cts-diff-with-android-23.html' title='Android 4.0 r1 CTS diff  (with Android 2.3 CTS)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-1561872314792858505</id><published>2011-11-14T06:28:00.000-08:00</published><updated>2011-11-14T06:31:06.954-08:00</updated><title type='text'>4</title><content type='html'>A magic number&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-1561872314792858505?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/1561872314792858505/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=1561872314792858505' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1561872314792858505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1561872314792858505'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/11/4.html' title='4'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-5316377879649193884</id><published>2011-10-16T05:01:00.000-07:00</published><updated>2011-11-16T07:01:20.850-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='m2m'/><title type='text'>Siri is HAL?</title><content type='html'>不管 Apple 公司產品發表策略是什麼, iphone 4s 唯一的亮點大概就是 Siri. 這兩天在思考 Siri 到底跟以前的語音輸入有什麼不同時, 發覺我應該從客觀環境來看 Siri 出現在手機上代表著什麼.&lt;br /&gt;&lt;br /&gt;* 手機有足夠的運算能力, 可以分析收到的資料&lt;br /&gt;* 有眼睛 (Camera)&lt;br /&gt;* 有耳朵 (Mic)&lt;br /&gt;* 有嘴巴 (Speaker/Receiver)&lt;br /&gt;* 知道自己在哪 (GPS/AGPS)&lt;br /&gt;* 使用者已經習慣 always online 連線方式 (3G or 4G)&lt;br /&gt;* 使用者開始習慣用手機上網取得一些服務&lt;br /&gt;&lt;br /&gt;就功能上看 Siri 是可以有機會變成下一個世代的搜尋引擎, 或是真的當成所謂 "雲端' 服務的窗口, 就跟前一陣子的 "老闆不是人 (Horrible Bosses)" 電影一樣, 車上的服務系統隨時有個印度人 online 的感覺 ;) .&lt;br /&gt;&lt;br /&gt;G 公司的搜尋你還可以選擇下一個連結, "感覺" 上比較可以控制 (其實也只是感覺而已, 因為下一個 click 經常也是被決定的 :P) 只是大家比較注意第一個 click 或 link 的 rank)&lt;br /&gt;&lt;br /&gt;語音的特性是無法列表的, 所以 Siri 應該直接跟你講答案, 但是能做到多個人呢? 我的期望是 (純屬模擬):&lt;br /&gt;&lt;br /&gt;Me: 今天幫我訂吃牛排的位置&lt;br /&gt;Siri: 是常去那間嗎&lt;br /&gt;Me: Yes&lt;br /&gt;Siri: Ok (然後把剩下的搞定, 訂位, 發 mail, 同步行事曆到 iCloud 跟我所有的 i device)&lt;br /&gt;&lt;br /&gt;如果訂不到:&lt;br /&gt;Siri ring...: 餐廳沒位置, 要選其他的嗎&lt;br /&gt;Me: 有什麼建議嗎&lt;br /&gt;Siri: 根據你的收入, 月底了, 還是路邊攤吃吃就好...&lt;br /&gt;Me: 果然 hold 的住&lt;br /&gt;Siri: 我比 hold 住姊強多了, 謝謝&lt;br /&gt;&lt;br /&gt;如果只能告訴我附近有哪些餐廳就有一點遜. 如果跟電話答錄機一樣跟你說一堆 options, 那應該這個助理很快就被開除了. 但是如果他是 HAL 呢?&lt;br /&gt;&lt;br /&gt;Siri, Siri give me your answer do.&lt;br /&gt;I'm half crazy all for the love of you...&lt;br /&gt;&lt;br /&gt;&lt;object style="height: 390px; width: 450px"&gt;&lt;param name="movie" value="http://www.youtube.com/v/41U78QP8nBk?version=3&amp;feature=player_detailpage"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/41U78QP8nBk?version=3&amp;feature=player_detailpage" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="450" height="360"&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;不過我覺得這個功能 G 公司先推出才對.&lt;br /&gt;&lt;br /&gt;我想歐洲應該會說, 這麼了解自己的 Siri 侵犯到隱私權吧...付錢請一個老大哥 (Big Brother) 待在身邊好像不是很 make sense.&lt;br /&gt;&lt;br /&gt;update 10/25&lt;br /&gt;&lt;br /&gt;Surprising news, Siri 的 co founder Dag Kittlaus just left Apple&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-5316377879649193884?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/5316377879649193884/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=5316377879649193884' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5316377879649193884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5316377879649193884'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/10/siri.html' title='Siri is HAL?'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8403831233597100477</id><published>2011-10-06T02:58:00.000-07:00</published><updated>2011-10-06T09:05:16.815-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>向 Steve Jobs 致上最高的敬意</title><content type='html'>對一個童年被 APPLE II 填滿生活跟閱讀 A+ jobs/woz column 長大的人來說, 今天真是個悲傷的日子.&lt;br /&gt;&lt;br /&gt;Thank you, Steve.    RIP...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://apple2history.org/history/ah21/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8403831233597100477?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8403831233597100477/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8403831233597100477' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8403831233597100477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8403831233597100477'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/10/steve-jobs.html' title='向 Steve Jobs 致上最高的敬意'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3027845750232179067</id><published>2011-10-04T18:59:00.000-07:00</published><updated>2011-10-05T17:53:22.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>穿著 Prada 的惡魔啟示錄 - 沒有甚麼是理所當然的</title><content type='html'>這幾天放了個意料之外的 10/1 長假, 看到衛星電視的非x新聞又在大談 Windows 8, 雲端, ultrabook, Android....blah blah blah&lt;br /&gt;&lt;br /&gt;突然覺得把那個皮帶選擇跟毛衣 (sweater) 故事換成 OS/雲端/open source/Android/tablet/app store/etc... 對台灣 OEM/ODM 產業/股民也是很殘忍的存在.&lt;br /&gt;&lt;br /&gt;Android 跟 Windows 沒差別, Intel 跟 ARM 沒差別, Android Market 跟 APP store 沒差別, G 公司跟 M 公司沒差別...&lt;br /&gt;&lt;br /&gt;穿著 Prada 的惡魔 script excerpt.&lt;br /&gt;===================================&lt;br /&gt;No. No, no. Nothing's…&lt;br /&gt;&lt;br /&gt;You know, it's just that both those belts look exactly the same to me.&lt;br /&gt;&lt;br /&gt;You know, I'm still learning about this stuff and, uh…&lt;br /&gt;&lt;br /&gt;"This… stuff"?&lt;br /&gt;&lt;br /&gt;Oh. Okay. I see.&lt;br /&gt;&lt;br /&gt;You think this has nothing to do with you.&lt;br /&gt;&lt;br /&gt;You go to your closet…&lt;br /&gt;&lt;br /&gt;and you select… I don't know… that lumpy blue sweater, for instance…&lt;br /&gt;&lt;br /&gt;because you're trying to tell the world that you take yourself too seriously…&lt;br /&gt;&lt;br /&gt;to care about what you put on your back.&lt;br /&gt;&lt;br /&gt;But what you don't know is that that sweater is not just blue.&lt;br /&gt;&lt;br /&gt;It's not turquoise. It's not lapis.&lt;br /&gt;&lt;br /&gt;It's actually cerulean.&lt;br /&gt;&lt;br /&gt;And you're also blithely unaware of the fact…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3027845750232179067?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3027845750232179067/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3027845750232179067' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3027845750232179067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3027845750232179067'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/10/prada.html' title='穿著 Prada 的惡魔啟示錄 - 沒有甚麼是理所當然的'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-7582506416162931625</id><published>2011-10-02T07:28:00.000-07:00</published><updated>2011-10-16T06:21:32.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android CTS - painful with RTSP</title><content type='html'>這幾個月經常被 Android CTS 的網路測試弄得火冒三丈. 尤其現在大部份時間在大陸, 要得到一個乾淨的網路 (不經過 great firewall, no tunneling, no VPN) 的環境實在太難了.  但是 CTS 本身基本是為了 Android API 相容性, 跟 Google 服務 package (GMS) 做測試的, 所以網路的設定基本上是建立在:&lt;br /&gt;&lt;br /&gt;1. 可以使用 Google 服務的網路上&lt;br /&gt;2. Device 從 DHCP 取得的網路設定是值得相信的&lt;br /&gt;&lt;br /&gt;但是 1 跟 2 其實在大陸都很難達到. 對網路長城有一點研究就知道, 其實長城並不是靠 blocking IP 那種暴力的方式來擋住所有 connection, 而是包含 DNS redirect, URL filitering...etc 來達到 blocking 的方式. 所以 CTS 測項中跟網路有關最多的 DNS 連結跟查詢工作, 就會失敗. 不過拜both side 氣氛和緩之賜, 還是可以用 hinet 的 DNS resolve 正確的 IP, 連結到那些無害的測試網站 (like php.net/others)&lt;br /&gt;&lt;br /&gt;原先 CTS 2.3 r5 之前, AP 的 DHCP 改個 default DNS 就可以過了, 但是從 CTS R7(錯誤的 release), R8, R9 之後, 加了該死的 RTSP/HTTP streaming test, 內容更是從該死的 youtube 下載. HTTP 還好, 先天就有可 tunneling 的優勢...但是 RTSP 真的是被弄到了.....f 理論上用 VPN 應該可以避開, 但實際結果是 Android 至少在 2.3 base, RTSP 即使 protocol ok, streaming 不見得 VPN 內可以建得起來 stream, 因為你不會知道是 VPN 的出口不能建 port 554 connection, 還是 youtube 有設 routing rule,  filter 掉某些 routing. 但是結果不是被 firewall 擋就是被 youtube filter...@)@*@*#!&lt;br /&gt;&lt;br /&gt;雖然最後靠台北同事幫忙測試 ok, 但是過程實在太怒了....&lt;br /&gt;&lt;br /&gt;Anyway, 最後還是找一個技術上正確的 VPN 來解決這種無聊的測試環境假想設定.&lt;br /&gt;&lt;br /&gt;Appendix: Great Firewall of China&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Great_Firewall_of_China"&gt;http://en.wikipedia.org/wiki/Great_Firewall_of_China&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-7582506416162931625?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/7582506416162931625/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=7582506416162931625' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7582506416162931625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7582506416162931625'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/10/android-cts-painful-with-rtsp.html' title='Android CTS - painful with RTSP'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-7904138530571421860</id><published>2011-02-27T01:29:00.000-08:00</published><updated>2011-03-14T21:02:39.660-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android 3.0 模擬器太慢 - 還是老方法, 加 RAM helps, but not much</title><content type='html'>這幾天在看 Android 3.0 SDK 正式版的動畫 (&lt;a href="http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html"&gt;http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html&lt;/a&gt;) 跟 renderscript (&lt;a href="http://android-developers.blogspot.com/2011/02/introducing-renderscript.html"&gt;http://android-developers.blogspot.com/2011/02/introducing-renderscript.html&lt;/a&gt;), 發現模擬器還是跟測試版一樣慢到不行. 我想這麼重大的開發效率問題, 應該要早一點解決吧. 目前看到設定模擬器時, 將原先的 Device ram size 256 (MB) 改大到 1024 (MB), 發現動作有快一點, 開機還是一樣慢到一個程度, 這樣是不是大家都要去買一個 XOOM 啊....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-7904138530571421860?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/7904138530571421860/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=7904138530571421860' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7904138530571421860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7904138530571421860'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/02/android-30-ram.html' title='Android 3.0 模擬器太慢 - 還是老方法, 加 RAM helps, but not much'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2576844275854753062</id><published>2011-02-14T05:57:00.000-08:00</published><updated>2011-02-16T02:51:31.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>輪迴的遊戲 - Nokia + Microsoft...SO?</title><content type='html'>剛開始聽到 burning platform 加上跳北海的這個形容的時候, 只想到這個形容真好, 芬蘭人一定了解 sauna 的感覺, 這個例子 N 公司員工一定是感同身受啊. 沒想到接著就聽到 Nokia 棄守 symbian 跟 Meego, 投向 Windows phone 陣營起來. 連 Intel 都一副被拋棄的樣子, 更不要說 Nokia 剛領養的 QT 只能安靜的在旁邊嘆息了, 應該大家都傻眼吧. 我看 Nokia 跟 Symbian 的 twit 上, 一片罵聲連連, 員工示威. 看到 CEO stephen 還自己跳出來回 twit 說不是 M 的 trojan horse, 差點噗滋一聲笑出來. 我可以充分了解這個心情...BUT, 因為從小看過太多這類灑狗血賺人熱淚 (N 為何要棄我們而去找 M 啊...淚...)的合作案, 長大比較能冷眼旁觀 :P 不過, 還是蠻有感觸的, 所以趕快 blog 一下.&lt;br /&gt;&lt;br /&gt;現實層面來看, Nokia 雖然在被 Android + iphone + 山寨的夾擊下, 2010 還是能保有 28% 市佔率, 其實怎麼樣看都不算弱者. M 公司雖然智慧手機被殺到只剩個位數零頭 (因為只有所謂智慧型....), 但是 Windows phone 7 的確跟 Windows mobile 6.x 完全不同. 網路上一堆把這兩間公司標成 Loser +Loser, 但是明明兩間某方面都有 dominate 市場的能力, 所以裝什麼弱啊!!! 應該反托拉斯先要準備調查一下吧! 我個人覺得Windows phone 7 跟 Zune 比較像, 很簡潔. 這年頭大家都在瘋 apple, 其實 M 的 Zune type UI 就跟 xbox 一樣, 真的用過其實會覺得還不錯 (well, 除了 my xbox 出現過多次三紅, 跟 kinect 需要大客廳外). 我個人還蠻期待 M 跟 N 做出 impress 的東西. 以及這個 marriage (營運 cost down vs. 重拾 MS platform 信心) 可以撐多久 :P&lt;br /&gt;&lt;br /&gt;Nokia 當初跟 Intel 合作 Meego 也是蠻奇怪的事, 因為 Maemo/symbian/QT 跟 moblin 當初每個 target 不太一樣. 不過 Intel (butnot only Intel)也一直打著 x86 based mobile device 的主意,想想看, 所有的 x86 wintel 的 app 都不用 cross compile 啊, 多麼美好的世界! N 應該也寄望彌補 mobile device 上 roadmap 的空缺. x86 當然不單指小筆電的 atom, 還包括真正的 mobile device = PHONE 在內, 不過 x86 的 embedded mobile CPU solution 一直難產, 眼看 2011 年中一堆的 ARM cortex A9 dual core tablet 量產, 年底 PSP 2 的 quad-core cortex A9 量產, intel 應該不會讓 mobile computing 的餅全部被 ARMs 聯軍 吃掉吧 ;)&lt;br /&gt;&lt;br /&gt;現代三國 (Android/iOS/Windows) 還真是值得期待. 不過 x86 跟 ARM 的雲端對決應該也是觀戰重點.......低頭做筆記.&lt;br /&gt;&lt;br /&gt;一個情人節的無聊 nerd blog...haha&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2576844275854753062?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2576844275854753062/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2576844275854753062' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2576844275854753062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2576844275854753062'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/02/nokia-microsoftso.html' title='輪迴的遊戲 - Nokia + Microsoft...SO?'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3946742639170139616</id><published>2011-01-02T05:41:00.000-08:00</published><updated>2011-08-17T07:30:37.605-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android 基本產品化的常見問題 (Framework and APP) - Part 1</title><content type='html'>剛進入 2011 民國 100 年, 就聽到水果機的鬧鐘不響, 跟 Android 簡訊有機會會亂發的 bug 在 google code 的 issue list 被 complain 到洗版. 從第一次聽到 google 要推出自己的 app framework 到現在已經 3 年多了. 想當年, 從一開始有這個消息, 就一直不斷有人問那 Openmoko 怎麼辦? 不過當初我覺得這個問題, 應該留給時間來決定, 因為我們是沒辦法管到這麼多的, 一個想要 change the world 的專案, software framework 或 business model 並不是我們能夠控制的. 同時, 要 maintain 一個 open source 的 software framework 跟搭配 FOSS community 的發展, 也並不是那麼簡單的事. &lt;br /&gt;&lt;br /&gt;當年 (2006) FOSS (Free and Open Source Software) 並沒有像現在那麼多人認識 (多少是相對於當時, 現在並不見得真的多很多, 但是關心 Linux (驅動) 的人肯定多了不少 :P ). 由於這個專案剛開始只是內部的一個特別專案, 所以不管內外, 當年在台灣經常被問到幾個問題, 每次都跟 sean 在內部解釋半天, 可是當年解釋應該很多人聽不懂吧 :) 現在 Android model 算是比較 stable 的 model 了, 可以拿來借答一下.&lt;br /&gt;&lt;br /&gt;* 你們開放 source 之後, 人家拿你們 source code 不是就可以做一樣的產品了嗎?&lt;br /&gt;&lt;br /&gt;Open source 改版的 cycle 跟傳統 MS 3-5 年的 cycle 是不一樣的, 大概是 3-4 個月一個 cycle. Release source 是在產品交到市場後 "才" 需要 release source code (不過這一點是違反 real FOSS 的 release early/often 原則). 以 Android 的複雜度對一般的 RD 來說, 即使能力還不錯, 拿到 Android 最新的 source 到能夠 tune 完變成稍微 ok 產品, 最少也需要 2-3 個月或更長. 何況大部分廠商都極端依賴所謂 chip 原廠的 BSP (Windows or Android), 等到原廠 BSP 出來, 其實 Android 差不多都發新的版本了. 然後因為大部分 RD 其實都不會 (可能公司網路也不行) 加入 community development, 所以 code 就不斷的被 fork 出來, 改完一版基本上最多利用個半年, 然後重來一次. 大部分的狀況, 一堆 dirty hack 其實也只能讓產品剛剛好跑的動, 但是想要跟 S 公司的 tab 或是 H 公司手機比品質其實是很困難的. Google 可以控制 release schedule/發展方向, 即使你拿到 source, so what? 你還是痴痴的等 Android 下一版是 2.4 還是 3.0, 每天都還是不停的 google 是 4 月還是 5 月出下一版. 只要你 follow 遊戲規則, 你不知道定規則的人何時放棄跟 linux kernel upstream merge 的 policy, 或何時 freeze source code release.&lt;br /&gt;&lt;br /&gt;Open source 很大的一部分在於分享的精神 (當然 RSM 還有對 "知道" source 在幹嘛的需求), 這一部分是東方文化背景比較難了解的. 西方相對來說對於取用別人 donate code, 再把 code donate 回去的習慣是很自然的 (可能是宗教或教育的關係). 東方相對來說, 很容易陷入藏東藏西的循環裡.&lt;br /&gt;&lt;br /&gt;* 免費的 open source code or Linux 能用嗎(functional)?&lt;br /&gt;&lt;br /&gt;很久很久以前 :P 是一堆人 "覺得" 或振振有詞的說 Linux 不能用 (or 不好用) 在消費性電子產品, 或是適合沒有 UI 的產品上 (先不管 QT :) ). Linux kernel (with android patch) + Android framework 現在好像這類問題什麼都沒有了. 反而是大家直接拿來 tune 一 tune 就滿坑滿谷的 Android 產品, 覺得免費真好, 用的超高興. 但是這裡有一個問題, AOSP (Android Open Source Project) 的 code, 並不是為了每一家的產品量身訂做或是 debug. 在 Nexus S/Milestone 沒問題不代表在其他 ok. &lt;br /&gt;&lt;br /&gt;所以現在又有一個奇怪的觀念, 就是 Android 東西放上去會動不是就 ok 了嗎? &lt;br /&gt;&lt;br /&gt;我不確定這系列能寫或該寫多深, 可能也要分個幾次寫或是修修改改補充完, 工程就是這樣, 基本 porting 跟產品化的問題並不會隨時間改變. Android 產品還是幾個部分:&lt;br /&gt;&lt;br /&gt;* Driver&lt;br /&gt;* Power management&lt;br /&gt;* Media service&lt;br /&gt;* USB&lt;br /&gt;* Display and UI framework&lt;br /&gt;* Upgrade policy/flow&lt;br /&gt;* Service and Intent settings&lt;br /&gt;* Prepare for next release&lt;br /&gt;* Code Open = IPR Free?&lt;br /&gt;&lt;br /&gt;寫下來自己當備忘吧...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3946742639170139616?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3946742639170139616/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3946742639170139616' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3946742639170139616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3946742639170139616'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2011/01/android-framework-and-app-part-1.html' title='Android 基本產品化的常見問題 (Framework and APP) - Part 1'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3788669584449439259</id><published>2010-12-19T06:36:00.000-08:00</published><updated>2011-01-22T06:31:29.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>Reset</title><content type='html'>今年好像一直在忙, 忙的意思代表 loading 很高, 但是不代表大腦 input 跟 output 很多. 加上一連多次重感冒, 感覺還蠻虛的一年 +_+&lt;br /&gt;&lt;br /&gt;很高興的是, 拜 facebook 跟爬牆科技之賜, 還是跟以前的同學跟朋友有保持最低限度的聯絡. 算蠻值得高興的一件事. 像是沒事在 FB, 以前 MI 同學 Masaya Shinohara 就來問候一下, 還發現一起練琴的 Shugo Tokumaru 同學都出了好幾張專輯了. 真是... 光陰似箭阿....&lt;br /&gt;&lt;br /&gt;post 一首我覺得還蠻好聽的... rum hee&lt;br /&gt;&lt;br /&gt;&lt;object style="height: 390px; width: 450px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2FJ99ju9rfw?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/2FJ99ju9rfw?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="450" height="390"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;他網站上   (&lt;a href="http://www.shugotokumaru.com/"&gt;http://www.shugotokumaru.com/&lt;/a&gt; ) 整個 color/layout 蠻不錯的, nice mix&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3788669584449439259?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3788669584449439259/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3788669584449439259' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3788669584449439259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3788669584449439259'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2010/12/reset.html' title='Reset'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2202012793540127158</id><published>2010-11-14T00:48:00.000-08:00</published><updated>2010-11-14T00:50:55.853-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>Life is full of suprise</title><content type='html'>Good or Bad, 今天特別有感觸. 寫個 note 提醒自己, 當年還會痛.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2202012793540127158?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2202012793540127158/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2202012793540127158' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2202012793540127158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2202012793540127158'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2010/11/life-is-full-of-suprise.html' title='Life is full of suprise'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8517719202185449935</id><published>2010-04-05T02:34:00.000-07:00</published><updated>2010-04-05T08:33:42.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android 的 script engine (ASE) 專案</title><content type='html'>很多嵌入式或是一般的使用者終端專案都會需要使用 script 搭配類似 corn 的機制作一些排程處理的事情. 因為 Android 大部分的功能都是架構在 dalvik VM 上. 所以前一陣子再找 Android 有沒有像 Windows WSH (Windows scriptng host) 或 PyGTK 之類的 engine 可用. 才發現有一個 ASE (Android Script Engine) 專案 host 在 google code. 看起來還蠻符合一般需要的, 而且它支援 Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl. 看起來蠻實用的. 而且是 G 公司內部的人開發的, 雖然還在 alpha stage, 但他把一般常用的功能都封裝好, 同時還有 scheduler 功能, 看起來很實用, 有時間要來試試看.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/android-scripting/"&gt;http://code.google.com/p/android-scripting/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8517719202185449935?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/android-scripting/' title='Android 的 script engine (ASE) 專案'/><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8517719202185449935/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8517719202185449935' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8517719202185449935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8517719202185449935'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2010/04/android-script-engine-ase.html' title='Android 的 script engine (ASE) 專案'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-5790730051296403</id><published>2010-04-05T01:52:00.000-07:00</published><updated>2010-04-05T02:32:46.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>一張專輯與一首歌的距離</title><content type='html'>難得在連續假期中, 找到時間出來把被工作捲在一起的心情, 像發條一樣放鬆旋轉起來. 本來低調的心情, 不斷浮現著 Poison 的 every rose has it's thorn 的旋律, 拿著上星期買的 Cort 哼彈一下, 馬上就沉靜下來.&lt;br /&gt;&lt;br /&gt;到南京幾個月, 還沒時間出來到各景點晃一下, 總是在一樣的精品店與百貨公司周旋. 於是帶著難得充滿電的 iPod, 到夫子廟附近看看所謂的十里秦淮風光. 下了公交站, 開始放 Poison 的 Greatest hits, 從nothin' but a good time 開始了下午的旅程... 雖然我不是很喜歡這種有背景音樂的旅行方式, 但是好像也沒甚麼讓我可以隔絕小販的喧鬧聲跟不知所謂的 white noise.&lt;br /&gt;&lt;br /&gt;我曾考慮是不是該放一些傳統一些的 BGM, 而不是泡泡糖 rock, 來代表對曾經是江南最大的貢院一些尊重. 不過在看到夫子廟及貢院的小販後, 想想歷史的尊嚴也抵不過資本主義的現實. 這 tour 本來就沒設定甚麼目標, 也許這樣才重新有心情 blog 一下.&lt;br /&gt;&lt;br /&gt;一首 sultans of swing 的距離, 從一個終點帶回另一個起點 1912. 點了一杯熟悉的 starbucks ice latte, 在有些淡的牛奶味中, 隨著 beatles 的 Eight days a week 的歌聲中, 按下 submit 送出今天的心情.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-5790730051296403?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/5790730051296403/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=5790730051296403' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5790730051296403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5790730051296403'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2010/04/blog-post.html' title='一張專輯與一首歌的距離'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-4744281109060400661</id><published>2010-03-02T06:26:00.001-08:00</published><updated>2011-10-05T01:55:30.453-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Yellow Jackets @ 大河岸</title><content type='html'>又開始工作後, 生活開始被一堆事情填滿. 本來過年想寫跟錄一堆東西, 但是總是沒辦法安靜的坐下來. 可能短時間還是只能像囈語似的寫些不知所云的東西. 因為在內地工作 (是的, 我現在是爬牆 Po 文), 也命中註定了錯過了在大河岸的 yellow jackets 表演. 雖然以前看過他們幾次表演, 但是沒辦法享受那種 refresh 的感覺, 還是很 f.&lt;br /&gt;&lt;br /&gt;我想, 只有 hardcore 的 fusion 人才能了解這種無奈吧.&lt;br /&gt;&lt;br /&gt;不過, 很多即使號稱是樂迷, 對 Yellow Jackets 不見得很熟, 陣中又沒有 guitar hero, 可能造成一些觀賞的意願問題. 換個角度, 也許什麼都不知道另一種幸福吧.&lt;br /&gt;&lt;br /&gt;還是要給 Geddy 跟小儀姊拍拍手....&lt;br /&gt;&lt;br /&gt;對 yellow jackets 有興趣的話, check &lt;a href="http://www.yellowjackets.com/"&gt;http://www.yellowjackets.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* Some Update&lt;br /&gt;They were at Taipei again for 2011 Summer Jazz festival, and great as usual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-4744281109060400661?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/4744281109060400661/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=4744281109060400661' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/4744281109060400661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/4744281109060400661'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2010/03/yellow-jackets.html' title='Yellow Jackets @ 大河岸'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-1042802253562289470</id><published>2009-10-21T23:18:00.001-07:00</published><updated>2011-04-17T20:46:05.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>在 Freerunner 上開發 Android (cupcake) 應用程式 - 永遠的 Hello World</title><content type='html'>最近 Android 不知道在紅什麼, 一天到晚都看到新聞. 昨天突然想到自己這台電腦上 (ubuntu 8.04 LTS) 的裝的 Eclipse (3.2) 從來沒用過, 加上也沒用過最近 koolu release 的 Android 0.1.1 for Freerunner. 就想說來測一下, 來 study 一下有哪些變化. 發現目前好像 Android on Freerunner 的說明不是很完整, 就快速補一下. &lt;p&gt;首先, 參考了以下網站:&lt;br /&gt;* &lt;a href="http://developer.android.com/sdk"&gt;http://developer.android.com/sdk&lt;/a&gt; 使用 Android SDK 相關需要的條件 (&lt;a href="http://developer.android.com/sdk/1.6_r1/requirements.html"&gt;http://developer.android.com/sdk/1.6_r1/requirements.html&lt;/a&gt; ), 安裝 ADT (Android Development Tools) 相關的說明 (&lt;a href="http://developer.android.com/sdk/1.6_r1/installing.html"&gt;http://developer.android.com/sdk/1.6_r1/installing.html&lt;/a&gt; ). Download 1.6 的&lt;br /&gt;SDK tar.gz 檔&lt;br /&gt;* &lt;a href="http://code.google.com/p/android-on-freerunner/"&gt;http://code.google.com/p/android-on-freerunner/&lt;/a&gt; Download 最近一次的 0.1.1 release tar.gz 檔(or &lt;a href="http://www.t0ny.net/openmoko/images/android/"&gt;http://www.t0ny.net/openmoko/images/android/&lt;/a&gt;) 目前 android on freerunner 是用 weekly build 的方式 release fix.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Step1: 安裝 Eclipse, JDK, JRE &lt;/p&gt;&lt;p&gt;看了 google dev 說明依下, 就發覺一些問題. 因為我的桌機上裝的是 ubuntu 8.04 LTS, 預設 apt-get install 的 Eclipse 是 3.2 版. 完全不在 google 目前支援的範圍內 (3.4 and 3.5 版). 可是不死心, 想說 ADT 給他裝上去會不會動, 結果 install 一直失敗. 最後還是把 Eclipse 3.2 移了, 從&lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt; 抓了 3.5.1 classic 版本下來 (不過 google 是建議 java 版 or RCP 版). &lt;/p&gt;&lt;p&gt;抓下來解壓縮放到我的 home 目錄下, 執行 Eclipse 檔, 然後按照 google 的指示 從 Eclipse 3.5 的選單 Help -&amp;gt; Install New Softare. 在 In the Available Software dialog, 按下 Add.... 把 Location 填上去&lt;br /&gt;&lt;a href="https://dl-ssl.google.com/android/eclipse"&gt;https://dl-ssl.google.com/android/eclipse&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;接著想說按下一步就收工了, 結果一直發生 package 安裝驗證的 Error (connect to key store 或是類似的問題). 我想說我 jdk 都裝了 (雖然幾乎沒用過) 就 google 一下, 發覺是跟 gcj 相容性有關(後來在 google 的 specification 看到上面有寫 =_=?), 然後有善心人士把 command post 出來: &lt;/p&gt;&lt;p&gt;~$sudo apt-get install openjdk-6-jre sun-java6-jdk&lt;br /&gt;~$sudo update-java-alternatives -s java-6-sun &lt;/p&gt;&lt;p&gt;安裝完後, 還有把 SDK 的 path export 到環境變數, 修改 ~/.bashrc 加上一行: export PATH=${PATH}:&amp;lt;sdk_dir&amp;gt;/tools ,修改 preference&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_y3T3s33suM8/SuAlduwbQcI/AAAAAAAABoY/QzF4o-mqtOg/s1600-h/Screenshot-Preferences+.png"&gt;&lt;img style="MARGIN: 0pt 10px 10px 0pt; WIDTH: 400px; HEIGHT: 281px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5395353546287432130" border="0" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/SuAlduwbQcI/AAAAAAAABoY/QzF4o-mqtOg/s400/Screenshot-Preferences+.png" /&gt;&lt;/a&gt; &lt;p&gt;Eclipse 部分大概是這樣. &lt;/p&gt;&lt;p&gt;Step 2: 寫一個 hello world...&lt;br /&gt;寫個 helloworld, 以 Android 1.5 當 target 在 Android 模擬器上跑跑看, 編成 .apk 檔. 哈哈, 其實本篇不是教你寫 Hello world :P &lt;/p&gt;&lt;p&gt;Step 3: 請參考前面幾篇文章, 安裝 0.1.1 的 cupcake 到 Freerunner 上安裝完後, 到設定裏面把 screen and display 的 sleep 時間延長, 避免 suspend 時的 USB 斷線. 然後到 Application 設定裏面, 把 USB debugging/Stay awake/Allow mock locations 打勾, 然後把接受未簽名的 Unknown sources 選項打開. &lt;/p&gt;&lt;p&gt;Step 4: 建立 ADB 連線, 將 .apk 檔安裝到 freerunner 中.&lt;br /&gt;tony@tony-945:~$ adb kill-server&lt;br /&gt;tony@tony-945:~$ sudo ifconfig eth3 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;[sudo] password for tony:&lt;br /&gt;tony@tony-945:~$ export ADBHOST=192.168.0.202&lt;br /&gt;tony@tony-945:~$ adb install helloworld.apk&lt;br /&gt;* daemon not running. starting it now *&lt;br /&gt;* daemon started successfully *&lt;br /&gt;112 KB/s (6796 bytes in 0.058s)&lt;br /&gt;pkg: /data/local/tmp/helloworld.apk&lt;br /&gt;Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] &lt;/p&gt;&lt;p&gt;原來以為這樣就收工了, 但是不知為什麼, 即使 Unknown sources 選項打開, Android 一直不讓我裝未簽名 (NO_CERTIFICATES) 的 helloworld.apk, 迫不得已, 就順便簽一下了. &lt;/p&gt;&lt;p&gt;Step 5: 建立 keystore 目錄, 為 .apk 簽名. 這邊只提供過程 :)&lt;br /&gt;tony@tony-945:~$ mkdir android_dev_deploy&lt;br /&gt;tony@tony-945:~$ cd android_dev_deploy/&lt;br /&gt;tony@tony-945:~/android_dev_deploy$ mkdir keystore&lt;br /&gt;tony@tony-945:~/android_dev_deploy$ cd keystore/&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ mkdir keys&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ cd keys&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore/keys$ cd ..&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ keytool -genkey -alias GreenRoom&lt;br /&gt;-keyalg RSA -validity 20000 -keystore keys/anddev.keystore&lt;br /&gt;Enter keystore password:&lt;br /&gt;Re-enter new password:&lt;br /&gt;What is your first and last name?&lt;br /&gt;[Unknown]: Neng-Yu 'Tony' Tu&lt;br /&gt;What is the name of your organizational unit?&lt;br /&gt;[Unknown]: GreenRoom&lt;br /&gt;What is the name of your organization?&lt;br /&gt;[Unknown]: GreenRoom&lt;br /&gt;What is the name of your City or Locality?&lt;br /&gt;[Unknown]: Taipei&lt;br /&gt;What is the name of your State or Province?&lt;br /&gt;[Unknown]: Taiwan&lt;br /&gt;What is the two-letter country code for this unit?&lt;br /&gt;[Unknown]: TW&lt;br /&gt;Is CN=Neng-Yu 'Tony' Tu, OU=GreenRoom, O=GreenRoom, L=Taipei, ST=Taiwan,&lt;br /&gt;C=TW correct?&lt;br /&gt;[no]: yes &lt;/p&gt;&lt;p&gt;Enter key password for &amp;lt;anddev.keystore&amp;gt;&lt;br /&gt;(RETURN if same as keystore password):&lt;br /&gt;Re-enter new password:&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ ls&lt;br /&gt;keys&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ cd keys&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore/keys$ ls&lt;br /&gt;anddev.keystore&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore/keys$ cp&lt;br /&gt;/home/tony/helloworld.apk /home/tony/android_dev_deploy/keystore/&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore/keys$ cd ..&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ ls&lt;br /&gt;helloworld.apk keys&lt;/p&gt;&lt;p&gt;Step 6: apk 簽名 (Sign apk)&lt;/p&gt;&lt;p&gt;tony@tony-945:~/android_dev_deploy/keystore$ jarsigner -verbose -keystore&lt;br /&gt;keys/anddev.keystore -signedjar helloworld_signed.apk helloworld.apk anddev.&lt;br /&gt;keystore Enter Passphrase for keystore:&lt;br /&gt;adding: META-INF/MANIFEST.MF&lt;br /&gt;adding: META-INF/ANDDEV_K.SF&lt;br /&gt;adding: META-INF/ANDDEV_K.RSA&lt;br /&gt;signing: res/drawable/icon.png&lt;br /&gt;signing: res/layout/main.xml&lt;br /&gt;signing: AndroidManifest.xml&lt;br /&gt;signing: resources.arsc&lt;br /&gt;signing: classes.dex&lt;/p&gt;&lt;p&gt;tony@tony-945:~/android_dev_deploy/keystore$ ls&lt;br /&gt;helloworld.apk helloworld_signed.apk keys&lt;br /&gt;&lt;/p&gt;&lt;p&gt;tony@tony-945:~/android_dev_deploy/keystore$ cp helloworld_signed.apk ~/&lt;br /&gt;tony@tony-945:~/android_dev_deploy/keystore$ &lt;/p&gt;&lt;p&gt;Step 7: 安裝簽名 apk (signed apk)&lt;br /&gt;tony@tony-945:~$ ls hel*&lt;br /&gt;helloworld.apk helloworld_signed.apk&lt;br /&gt;tony@tony-945:~$ adb install helloworld_signed.apk&lt;br /&gt;127 KB/s (8484 bytes in 0.064s)&lt;br /&gt;pkg: /data/local/tmp/helloworld_signed.apk&lt;br /&gt;Success &lt;/p&gt;&lt;p&gt;終於等到 Success, 然後在 Android 應用程式區上就可以看到 Helloworld&lt;br /&gt;Application 了 :) 目前暫時結論是 unknown sources 選項在 0.1.1 版的 Android on Freerunner 有些問題, 所以 .apk 還是需要 sign 過才能用 adb 裝. Ya....收工.&lt;/p&gt;&lt;p&gt;後來發現 Eclipse 在這一版是可以自動找到 adb server, 直接從 Eclipse 將 code 丟到 0.1.1 版的 Android Freerunner 執行. 這樣直接 debug, 不需要使用 adb install 來做安裝的工作.&lt;/p&gt;&lt;p&gt;2009/10/29 update:&lt;/p&gt;&lt;p&gt;0.1.1 版的 Accelerometer 似乎有問題, 無法正確取得 accelerometer 的值, google groups/code track 也有提到. 不過 GPS/Wi-Fi/Audio/Vibrator 是可用的. SDK 的 samples 內附的 API demo 有很多範例除了看 code 怎麼寫. 還可順便測試硬體. 如果裝了 Eclispe, 可以編 API demo 試試看. GPS sample 我放了一個簡單的在 &lt;a href="http://t0ny.net/openmoko/samples/android/gps/"&gt;http://t0ny.net/openmoko/samples/android/gps/&lt;/a&gt; , 需要注意的地方只有 AndroidManifest 要把加設 user right 有 Access fine location, 不然編完無錯誤但無法執行. google code 上有許多 android 相關的 project, 例如 &lt;a href="http://code.google.com/p/bearing/"&gt;http://code.google.com/p/bearing/&lt;/a&gt; 也是一個 GPS data 的 viewer, 可以在 FR 上執行.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-1042802253562289470?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/1042802253562289470/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=1042802253562289470' title='21 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1042802253562289470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1042802253562289470'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/10/freerunner-android-cupcake-hello-world.html' title='在 Freerunner 上開發 Android (cupcake) 應用程式 - 永遠的 Hello World'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/SuAlduwbQcI/AAAAAAAABoY/QzF4o-mqtOg/s72-c/Screenshot-Preferences+.png' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2085542867827341126</id><published>2009-10-12T09:44:00.001-07:00</published><updated>2009-10-12T10:08:22.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>意料內的意外 = or != 行銷</title><content type='html'>電視上新聞 "一直" 看到 Michael Jackson 的新單曲在正式 release 前, 很巧的 TMZ 又在網站上搶先 post 了 47 秒的 MV. 這類搶鮮試聽, 或是滿足人偷窺慾望的 release 方式, 實在覺得是很老的梗了, 不過我想應該還是很有效吧 :) 這類真真假假的娛樂新聞, 本來就很容易引起一般人的注意. 不過, 我是很佩服美國娛樂產業可以這麼快的用 "電影" 的方式, 來 release 最後未完成的 "演唱會". 除了行銷的 idea 外, 當初這些在排練 take 的畫面, 以及相關的合約 arrange, 若沒有充足的經驗, 是很難在短時間內組織出相關產品的.&lt;br /&gt;&lt;br /&gt;很多 geek :P 可能會覺得這類娛樂新聞很無聊, 可是如果換一個方式呈現, 可能感覺就不一樣, 例如: 某個水果 3C 產品 release 一周被 hack 了, 或是某 online store 下載的軟體用很笨的 folder 方式保護. 到底是 user 破解了保護, 還是 marketing people 破解了 user 的心防.&lt;br /&gt;&lt;br /&gt;世界真是有趣阿 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2085542867827341126?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2085542867827341126/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2085542867827341126' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2085542867827341126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2085542867827341126'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/10/blog-post_12.html' title='意料內的意外 = or != 行銷'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-4041787690094655831</id><published>2009-10-08T00:13:00.001-07:00</published><updated>2009-10-08T00:16:12.280-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>雲端的迷思</title><content type='html'>這一陣子兩個颱風來, 大家為著氣象局的預報準不準在電視上鬧的沸沸揚揚. 媒體也乾脆把來自各國的預報路線用不同顏色疊在一起. 各電視台面對著向炸彈開花似的預報路線圖, 開始一種路線, 各自表述起來. 觀眾透過最簡單的 client 端: 電視, 收看著來自各個來自 "不同國家" 用 "不同演算法" 在所謂 "超級" 電腦中運算出來的結果. 突然覺得有點好笑, 想一想, 這也是種雲端運算吧, 只不過天邊不是只有一朵雲而已.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-4041787690094655831?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/4041787690094655831/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=4041787690094655831' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/4041787690094655831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/4041787690094655831'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/10/blog-post.html' title='雲端的迷思'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6554120961720172180</id><published>2009-09-23T03:11:00.001-07:00</published><updated>2009-09-23T21:50:32.961-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>有趣的互動設計概念 (interactive design concept)</title><content type='html'>感謝 youtube/vimeo and google, 最近看到幾個有趣的互動設計 concept.&lt;br /&gt;&lt;br /&gt;* 這是真實物件位置跟背景光影互動&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="220"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6528175&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6528175&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="220"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6528175"&gt;Bouncing Balls&lt;/a&gt; from &lt;a href="http://vimeo.com/thedofl"&gt;Dofl Yun&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;* 這是透過不同感知的方式來展現互動創作的可能性&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="267"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2665477&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2665477&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="267"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/2665477"&gt;ensemble project&lt;/a&gt; from &lt;a href="http://vimeo.com/thedofl"&gt;Dofl Yun&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;* 一個有趣的互動 Drum/sequencer (thanks, wilson :) )&lt;br /&gt;&lt;br /&gt;&lt;object width="420" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cKd8NXWwvKI&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/cKd8NXWwvKI&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="420" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 可提供觸感的 3D 投影 (搭配 ultrasonic pad)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Y-P1zZAcPuw&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Y-P1zZAcPuw&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Wii 的一個新 game, 非常令人深思的遊戲進行方式.&lt;br /&gt;&lt;br /&gt;&lt;object width="420" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/j3HXgvl8lp0&amp;amp;hl=zh_TW&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/j3HXgvl8lp0&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="420" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6554120961720172180?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6554120961720172180/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6554120961720172180' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6554120961720172180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6554120961720172180'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/09/interactive-design-concept.html' title='有趣的互動設計概念 (interactive design concept)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-5791186580301463171</id><published>2009-09-15T01:44:00.001-07:00</published><updated>2009-09-23T21:58:20.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>感動的 T-SQUARE 表演</title><content type='html'>原來以為日本 Fusion 已經沒辦法再打動我了, 果然現場表演才是王道阿, 現場的氣氛讓我回想到以前天天聽他們 CD 的日子. 好聽的音樂還是好聽的音樂, 不會因為時間跟人的改變而改變.&lt;br /&gt;&lt;br /&gt;想當年 (驚覺過了 20 年@_@ ) 開始聽 Fusion 這個領域, 最早是因為海國的老師, 拿了高中正義的虹傳說譜給我練, 當時狂練 Yngwie 掃弦的我根本不知道什麼是 fusion, 更不要說知道什麼是 jazz. 只是覺得很好聽, 但是聽不懂. 但是還是很努力的存錢, 買了一張又一張每張 700 到 1,000 起跳的原裝日本 CD. 開始慢慢喜歡上 CASIOPEA 跟 T-Square 這種華麗, 聽不懂, 也不是很吵的音樂.&lt;br /&gt;&lt;br /&gt;後來隨著各種音樂越聽越多, 也到了美國這個 Jazz/Fusion 的發源地洗腦了兩年. 看到了許多有名或不有名但超厲害的表演. 也獨自到 NY 窩在巷子�狹小的 smalls, 呼吸充滿 jazz 的空氣, 體驗來自各個不同背景的樂手, 整晚交替表演各式不一樣風格的音樂. 每一個表演都充滿用靈魂敲擊音符的原始音樂能量. 後來有很長一段時間, 很少聽日本系的 fusion, 因為總覺得太拘謹, 過分修飾 (電味太濃) 跟華麗, 缺乏了那種生命推動音符的震撼.&lt;br /&gt;&lt;br /&gt;好不容易過了 20 年, T-Square 終於來台灣. 可能很多人不知道 T-Square 這個團, 但其實聽過 T-Square 的音樂, 像傳統日本 F1 的轉播主題曲 Truth 就是 T-Square 的安藤(Andoh) 作品. 還有以前的 Arc the Lad (&lt;a href="http://en.wikipedia.org/wiki/Arc_the_Lad_(series"&gt;http://en.wikipedia.org/wiki/Arc_the_Lad_(series&lt;/a&gt; )遊戲, 跟 PS 上最有名的賽車 GT (Gran Turismo) 系列, 安藤也是音樂總監跟主題曲作者.&lt;br /&gt;&lt;br /&gt;T-Square 官方站: &lt;a href="http://www.tsquare.jp/free/index.html"&gt;http://www.tsquare.jp/free/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;期間 T-Square 團員也更換過好幾次了, 雖然 keyboard/bass/drums 都不是我那個年代的, 不過 "最" 主要的吉他安藤 (Masahiro Andoh) 跟負責 Sax 跟 EWI 的伊東 (Takeshi Ito) 都有來. 表演一開始, 我雞皮疙瘩就起來了, 因為我那時心情很平靜, 以為是冷氣太冷. 不過後來想想, 應該是潛意識的激動. 表演維持個一慣日系的精準, 華麗, 控制, 但是跟 CD 不一樣的是, 現場表演多了一股共鳴的張力. 果然日本 Fusion 也是可以很熱血.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bjOdcAyXqps&amp;hl=zh_TW&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bjOdcAyXqps&amp;hl=zh_TW&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;現場表演很讚, 年輕鼓手的能量很夠而且完全的控制內. 加上很多來的人應該對 T-Square 都很熟, 也有很多音樂圈的樂手有來. 整體氣氛其實很 high, 最後 encore 表演 truth 更是熱血百分百. 如果沒提早開燈, 我想應該會 Encore 更多首. 雖然沒辦法像負責導聽的小呂老師有機會參加 T-Square 的慶功宴 ...&amp;gt;_&amp;lt;... 但這的確是難忘的 J-Fusion 之夜.&lt;br /&gt;&lt;br /&gt;T-Square 最高....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-5791186580301463171?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/5791186580301463171/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=5791186580301463171' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5791186580301463171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5791186580301463171'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/09/t-square.html' title='感動的 T-SQUARE 表演'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8781057333684919899</id><published>2009-09-08T23:57:00.001-07:00</published><updated>2009-11-08T07:08:42.057-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>產品形象 (identity)</title><content type='html'>昨天到國家音樂廳, 看了我個人非常喜愛的一位吉他手 John Scofield &lt;a href="http://en.wikipedia.org/wiki/John_Scofield"&gt;(http://en.wikipedia.org/wiki/John_Scofield&lt;/a&gt;) 的 band 表演, 他很喜歡用一般 musician 不會用的 color note, 但是用非常流暢的藍調 a-like phase 跟 shuffle/funk rhythm 來表現他的音樂, 雖然曲目大部分是最近這一張專輯 gospel 類的音樂, 曲目本身結構不像他在純 jazz band 那麼複雜, 但是用音依舊是他自己的 taste, 而且非常 groovy 的一場好表演.&lt;br /&gt;&lt;br /&gt;翻翻幾百張因為跟吉他手相關而買的 CD, 發現常聽的幾張, 音色跟旋律線的辨識度都非常高. 而且, 他們對現場即興 (improvising) 演奏的 taste 都有獨到品味難以被模仿.&lt;br /&gt;&lt;br /&gt;美國娛樂產業發達, 有同樣技術的太多, 市場 (包含: "消費者" 以及挑選產品進市場的 "唱片公司") 非常注意原創性及獨創性, 所以能夠出現在一般人面前同時受歡迎的專輯, 其實都是打敗了數以萬計的競爭者才冒出頭的. 換句話說, 通常一般人看到的都是已經 build 好的 identity, 經紀/ marketing/promoter 對這些 identity 建立, 都下了許多一般人看不見的功夫 (選擇 artist/包裝/行銷) 在裡面.&lt;br /&gt;&lt;br /&gt;人透過 identity (tag/icon) 來認識一樣東西是被從小訓練的. 例如: 受教育的過程本身就是一個 format 認知的過程, 如果大家都考一樣的試, 搶念一樣的學校, 看一樣的 MTV, 把一樣的人當偶像 (藝人 or 非藝人). 說實在的, 如果教育 build-in 這麼深, 要一般消費者有獨立思考跟自我品味這件事其實太強人所難 :)&lt;br /&gt;&lt;br /&gt;正因為大家對於 identity 的認知多半來自於外部的描述, 而少有自己的感受, 所以廣告跟行銷手法才有發揮作用的地方. 很多人覺得 identity 是被包裝出來的, 我個人的看法有些不太一樣. 例如, 一般電子產品常見的 identity (簡化的):&lt;br /&gt;&lt;br /&gt;* 最便宜&lt;br /&gt;* 最炫, 最牛B&lt;br /&gt;* 最物超所值&lt;br /&gt;* 功能最多&lt;br /&gt;* 服務最好&lt;br /&gt;* 最方便&lt;br /&gt;* 最有品味&lt;br /&gt;&lt;br /&gt;其實建立好任何一樣 identity, 應該都可以在市場上存活, 持續重現這些 identity 的能力也都是每間公司的 know-how. 以製造業最擅長的 cost-down 為例, 都會知道一直做到 "最" 便宜其實也沒那麼容易, 因為從流程 - 設計 - 生產, 每個細節都會影響 "最" 這個字, 不小心就會讓 "最" 變得很 "一般".&lt;br /&gt;&lt;br /&gt;從另一個角度來說, 當要作一個最有品味的產品, 出發點就是品味 :) 所有的包裝 (marketing/promote) 都會繞著品味打轉. 產品定義的人的 mindset 就跟 cost-down 的人 mindset 就完全不一樣. 人通常也不會是同一種人. 在現實生活, 經常 marketing 要把原先設計 " 功能最多" 的產品, 轉化成 "最有品味" 的產品 image, 其實不是那麼容易. 因為要改變產品的既有印象是很困難的, 除非 marketing 的人找到一個夠好的 story.&lt;br /&gt;&lt;br /&gt;我常聽到: A 產品本身就沒有什麼特色可包裝, 所以廣告跟 marketing 效果不好. 但是, 經常問題來自於 A 產品當初建立時就沒有什麼明確的核心思想, 或本來的核心思想跟要進入的市場無關, 所以後來 marketing/promoter 在包裝時, 累得半死想破頭加減一些無關緊要的東西, 目的讓產品在要進入的市場看起來更 attractive, 經常是事倍而功半.&lt;br /&gt;&lt;br /&gt;如果能在 identity 中, "建立" 一個市場沒有的字彙, "然後" 又獲得認同. 通常就是該新市場的 leading 角色了. But keep leading always another story :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8781057333684919899?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8781057333684919899/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8781057333684919899' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8781057333684919899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8781057333684919899'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/09/identity.html' title='產品形象 (identity)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6556591724057432097</id><published>2009-09-07T02:33:00.001-07:00</published><updated>2009-10-01T06:39:08.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>硬體產品專案管理經驗分享 - 時程 (schedule)</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px" id="BLOGGER_PHOTO_ID_5366706405321316642" border="0" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;不論專案或是產品, 通常都有俗話所謂的 deadline 或是market window 限制. 基本上 PM 被賦予的任務就是得到目標後 (明確 or 不明確 :P 的目標都有可能), 在指定的時間內, 協調公司內外部 resource (錢, 人員, 組織), 達成指定目標. 所有的 resource 投入, 都是為了在某個時間點取得某個成果 (working sample/demo/trade show/shipping/etc). 錯過了時間點, 後果通常都很嚴重. 通常影響 schedule 最大的是 scope 變更, 但這裡不討論 scope 變更的問題.&lt;br /&gt;&lt;br /&gt;這幾天又在 HBO 看到 "大敵當前 (Enemy at the Gates )" 這部片子, 這個戰爭電影有一句還蠻經典的對白:&lt;br /&gt;&lt;br /&gt;Vodka is a luxury we have. Caviare is a luxury we have. Time is not.&lt;br /&gt;-Enemy at the Gates, Nikita Khrushchev&lt;br /&gt;&lt;br /&gt;意思是說, 我們可以享用 (一般老百姓沒有的) 伏特加跟魚子醬, 但是唯一沒有時間可以浪費 (Time is not luxury we have). PM 可以協調找到資源, 但是永遠缺時間. 假你錯過時間, 可能產品失敗的機會或隱藏的成本, 一般來說會呈現 "幾何" 倍數增加. 要有一個重要概念: 最後一個月追加 30% 的預算跟 delay schedule 東西 marketing/sales 預估少賣 30% 的量, 到底是哪一個損失比較大. cost 觀念不是只有 PM 要有, 同時專案裡的人對 cost 要有相同共識.&lt;br /&gt;&lt;br /&gt;Schedule 這個東西 "看" 起來很簡單, 不過就是做一件事需要多少時間, 把所有需要的時間按照發生的先後順序調整一下就好 (跟 programming 很像, 不是嗎 XD ). 問題來了:&lt;br /&gt;&lt;br /&gt;* 如何知道做這個軟/硬體或做這個 project 一共有哪些事情 (scope 有多大)&lt;br /&gt;* 這些事情對應的 function 組織及負責人是誰&lt;br /&gt;* 如何知道這些事情需要多少時間&lt;br /&gt;* 如何分辨這些事情出錯造成的風險跟衝擊有多大&lt;br /&gt;* 遇到問題的應變跟通知對象&lt;br /&gt;&lt;br /&gt;這一部分其實就是大部分 Developer 踏入 PM 領域的第一項 "技術" 門檻, 因為瞭解組織跟認識 API/function block 一樣, 都需要時間跟精神. 同時, 跟 "人" 溝通不是 下 command 給電腦, 不是馬上有結果 or 每次結果如你預期一樣. 當然某個程度來說, 做產品/專案有一點像 coding, 只不過 coding 的對象是組織而不是 library. 當然, 你對組織/流程/工具越熟, 就越能有效率跟機會達成原先設定的目標. 根據不同的成長經驗, 每一個 PM 都有每一個 PM 不同的風格, 下面是我覺得一開始比較重要的:&lt;br /&gt;&lt;br /&gt;* 了解並釐清公司內部組織跟流程規範&lt;br /&gt;&lt;br /&gt;每一間稍具規模的硬體公司, 都會有標準的流程或是 follow 公司訂的 ISO 流程. 認識這些流程是了解硬體相關專案管理的第一步. 台灣從純代工的 OEM 到現在佔世界 3C ODM 跟 OBM 的重要地位也有幾十年了. 從微利的代工開始, 所以設計到製造其實分工很細, 流程本身相對於很多其他產業來說也嚴謹許多, 每一個細節為什麼這樣做都有其歷史原因. 一般來說, 因為其實細節太多, PM 可以了解或不了解, 不懂可以問, 但最好不要用猜的.&lt;br /&gt;&lt;br /&gt;* 總共有哪些重要項目, 哪些時間是固定的, 例如 (但不限於):&lt;br /&gt;&lt;br /&gt;a. 每一個階段 (EVT/DVT/PVT or 不同 flow 階段) 的 check point 時間, 跟 check point 對應的 check item 是什麼.&lt;br /&gt;b. BOM 裏面的關鍵零組件備料時間 (採購通常會提出一個安全反應時間, 有一些例如: 發 PCB gerber 到交貨時間, 常都是固定的天數)&lt;br /&gt;c. 硬體產品認證時間 (Lab 會評估如果 sample "軟" + "硬" 體都沒問題, 多少時間可測完)&lt;br /&gt;d. 每一個關鍵硬體功能的需要驗證時間 (從發出需求給 vendor, 到 sample 驗完)&lt;br /&gt;e. 採購的作業時間&lt;br /&gt;f. 整合測試的 cycle time, 例如發行軟體測一個 round 需要多少時間&lt;br /&gt;g. 量產從 RD 到 PE 到工廠的技轉時間&lt;br /&gt;h. 工廠的前置作業時間&lt;br /&gt;&lt;br /&gt;* 產出重要文件需要的時間請放入 schedule 中&lt;br /&gt;&lt;br /&gt;文件通常不是交付或驗收標的物, 所以很多人就忽略文件的重要性. 一般 Follow "標準" (ISO/CMMI) 流程的專案 (如果公司跑 ISO/CMMI/PDM 的話), 會產出一堆的文件, 用這些必然產出的文件當控制點是蠻方便作法. 但是因為跑流程, 有額外的文件負擔, 許多小規模的專案, 常只產出少量文件或完全沒有文件. 因為口說無憑, 進行到後段經常會很難收尾. 如果該產出的重要文件, 我個人覺得還是要放入 schedule 計畫中比較好. 有時前面為了省一些寫文件時間, 後面會浪費更多協調溝通時間.&lt;br /&gt;&lt;br /&gt;* 將預先設定好的 milestone, 跟必然產出的文件項目放入 project 管理軟體&lt;br /&gt;&lt;br /&gt;用最簡單的例子: product spec 展開後可以有-&amp;gt; hardware design spec + software design spec, 接下來又有各有對應的 verification citeria 跟 factory test item. 這有一定會產出的 item, 可以像樹狀圖一樣依照分類 (軟體/硬體/測試/etc) 先放到 project schedule 軟體, 這樣對整個 project scope 跟各個事件的相依性會清楚很多. 當然, 如果最後畫的出 critical path 更好, 不過在現實世界的互動裡, critical path 會隨專案進行變動的 ;)&lt;br /&gt;&lt;br /&gt;* 保持溝通透明與順暢&lt;br /&gt;&lt;br /&gt;專案越大, 協調溝通的人越多, 溝通透明跟順暢就越重要. 透明是盡量讓溝通過程中造成的誤解減少, 原則是對事不對人, 記得傳遞訊息的目的是解決問題. 順暢是讓專案成員願意主動傳遞訊息 (不論是好消息還是壞消息). 專案進行中有意識 or 無意識自我過濾訊息, 通常是災難的開始. Schedule 很多東西是看不到的, 通常事情都是發生問題, 才能從 schedule 看到 delay. 溝通的透明跟順暢讓這些看不出的問題, 影響 schedule 的程度減少, 同時縮短下對策的反應時間.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6556591724057432097?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6556591724057432097/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6556591724057432097' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6556591724057432097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6556591724057432097'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/09/schedule.html' title='硬體產品專案管理經驗分享 - 時程 (schedule)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3772689699344180383</id><published>2009-09-02T02:45:00.000-07:00</published><updated>2011-02-16T02:49:35.302-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>硬體產品專案管理經驗分享 - 專利 (IPR)</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 88px; float: left; height: 31px;" id="BLOGGER_PHOTO_ID_5366706405321316642" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;記得很久以前, 小時候看天下雜誌還是商業週刊, 提到企業的資訊蒐集及 data mining 能力很重要. 那時只是很抽象的知道這件事很重要, 但是並沒有意識到到底有多重要 (or 多可怕). 工作一段時間之後, 透過許多不同的方式, 看到各家的產業報告, VC (venture capital) 的投資分析, 以及 real world 的專利分析報告. 才驚覺自己所學在整個產業中的渺小.&lt;br /&gt;&lt;br /&gt;並不是每個人都喜歡 Intellectual Property Right (IPR) 的觀念, 跟所造成的壟斷跟限制, 但是現在除非是都是以專案 (非歐美地區) 或是封閉性小眾客戶為主, 我個人認為, 做產品很難不遇到 IPR 問題. 所以做某個跟 $$ 相關的決定, 要能先意識到 IPR 問題是很重要的, 因為這代表著隱藏的時間, 成本, 跟風險. 這類跟 IPR 相關的產品管理不是只出現在電子 or 製造業. 其它例如藥品業, 也是產品開發時就已經結合 IPR 跟生命週期管理. 透過有組織的分析各種公開資訊 (專利/法律/財報), 可以看見很多公司內部的訊息, 常見的包含:&lt;br /&gt;&lt;br /&gt;* 公司未來可能產品方向跟佈局&lt;br /&gt;* 公司有哪些專利訴訟正在進行 &amp;lt;- 有哪些 IPR 是經的起考驗, 或真的有 value 可以跟人家 trade&lt;br /&gt;* 專利申請人有哪些 &amp;lt;- 通常是有 know-how 的 key man&lt;br /&gt;* 用 IPR 被引用的次數, 做公司實際 value 的評估&lt;br /&gt;&lt;br /&gt;另外, 很多人把 IPR 管理/分析, 跟商標/專利申請混為一談. 也很常常見到低品質, 或是其實無任何保護或攻擊效力的專利申請, 當成是 IPR 應用的全部. IPR 這個領域也已經有百多年歷史了, 其實有分工非常細的生態, 不是簡單可以說完的. 我個人是覺得科技業的企業整體戰力, 跟 IPR 法務戰力基本上是成正比的. 產品遇到的 IPR 問題, 也通常跟產品的熱門程度成正比 :)&lt;br /&gt;&lt;br /&gt;很多人對 IPR 有很多迷思, 典型的例如: 這個產品是我們自己設計的, 沒有參考別人, 就沒有 IPR 問題. Or 我的 reference design 來自某某知名公司, 不會有相關 IPR 授權金問題. Or 用 Open source 沒有權利金的問題... 很多啦, 這幾個敘述都該打 X, 因為都是錯的 :) . 這邊有幾點常見注意的問題.&lt;br /&gt;&lt;br /&gt;* 產品有哪些關鍵零組件 (key components), 這些關鍵零組件本身是否已經 cover 了 IPR (尤其是需要 essential IPR (基礎專利, 簡單來說就是你不可能做出功能一樣, 但是不侵犯專利的產品) 的元件, 如 GSM/3G/etc...)的費用? 一般來說, chipset solution 不 cover 終端產品的 IPR, 而 module solution 有些會, 有些不會. 在選料時要先確認.&lt;br /&gt;&lt;br /&gt;* 很多專利 alliance/pool, 是找 manufacturer 簽約付授權金, 而不是根據 design house 或是 branding company 的實際生產/出貨數量. 這會造成 manufacturer 不見得願意付, 或是跟你一起跟 alliance/pool 談.&lt;br /&gt;&lt;br /&gt;* 若使用的硬體 chipset 有內建 codec (MEPG2/MPEG3/others), 或 firmware (software) 包含 codec, 就有可能需要付授權費. 簡單的使用者 2 次加工 (例如: 出貨時功能不全, 但使用者把某一個東西放進 device, 或是按下某個鍵, 就可以讓 device 功能完整), 不見得能規避 IPR 的問題.&lt;br /&gt;&lt;br /&gt;* (歐洲) 某些國家海關 (如: 德國), 海關可以直接扣押主觀認為有侵權疑慮的產品, 所以可能在沒收到任何 IP holder 的 letter 下, 毫無預警被扣押.&lt;br /&gt;&lt;br /&gt;*產品交貨是 FOB, DDU 或是 DDP, IPR 授權金基本上跟出貨地點有間接關係 (who will pay), 在考慮整體 cost 跟 BOM 時, PM 應該把這一部份成本跟 schedule 考慮進去.&lt;br /&gt;&lt;br /&gt;* 因為通常一個產品裡面會有多個 function block, 每個 function 都有可能有 patent 的問題. 所以被人發 letter claim IPR fee 時, 先確認人家 claim 什麼? 很多公司都是發警告信, 但是不會在第一時間跟你說要 claim 什麼. 此時不要 panic, 請先回信確認他代表哪些 IPR pool, 他要 claim 什麼?&lt;br /&gt;&lt;br /&gt;* 如果產品中有包含 Open Source (GPL) 軟體/tools (如 busybox), 產品相關的 source code 也需要公佈, for example: &lt;a href="http://thinkingopen.wordpress.com/2008/06/10/busybox-is-back-back-again/"&gt;http://thinkingopen.wordpress.com/2008/06/10/busybox-is-back-back-again/&lt;/a&gt; 如果用到 codec, 還是要付 codec alliance 的 IPR.&lt;br /&gt;&lt;br /&gt;當初 google android 不直接使用 Java ME VM 在產品中, 而自己重做 Dalvik VM, 其實也是有 patent 跟策略考慮在裡面, 因為能 open source code 跟能將 code 以硬體產品方式散佈是不同的授權 (不知道有沒有人冒冷汗 ^^!). 其中還點到 MS 跟 Sun 當初對 JVM 交換授權的問題. 有興趣可以搜尋一下 dalvik vm 相關的文章. 例如這一篇: &lt;a href="http://www.betaversion.org/%7Estefano/linotype/news/110/"&gt;http://www.betaversion.org/~stefano/linotype/news/110/&lt;/a&gt; 裏面把 google 不使用 sun 的技術的原因, 從策略角度上做了不錯的說明. 除了規避之外, Microsoft 買了 Andy Rubin (Android leader) 的前一個 fund 的公司 Danger (同樣 base on JVM), 很多分析家都在看 Microsoft 何時會拿出這張牌.&lt;br /&gt;&lt;br /&gt;即使是單純接收資料的 GPS, 可能在不同地區也會被 claim IPR (會發生很奇怪的現象, 收美國軍方衛星資料, 但要付歐洲公司錢??) 所以沒有什麼不會被 claim 的.&lt;br /&gt;&lt;br /&gt;相關 IPR 的資訊現在開始越來越多, 下面幾個網站我覺得還蠻值得入門參考的:&lt;br /&gt;&lt;br /&gt;* 國家實驗研究院科技政策研究與資訊中心 &lt;a href="http://cdnet.stpi.org.tw/intro.htm"&gt;http://cdnet.stpi.org.tw/intro.htm&lt;/a&gt;&lt;br /&gt;* 資策會科技法律中心 &lt;a href="http://stlc.iii.org.tw/"&gt;http://stlc.iii.org.tw/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;參考書籍的話, 周延鵬 (周律師) 的書不錯, 很多 Business 上的細節都有點到, 很值得參考, 推一下 :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3772689699344180383?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3772689699344180383/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3772689699344180383' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3772689699344180383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3772689699344180383'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/09/ipr.html' title='硬體產品專案管理經驗分享 - 專利 (IPR)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-874849900319172224</id><published>2009-08-27T00:33:00.001-07:00</published><updated>2009-09-07T03:13:14.010-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>硬體產品專案管理經驗分享 - 規格 (specification)</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px" id="BLOGGER_PHOTO_ID_5366706405321316642" border="0" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;前一陣子有朋友問到硬體產品專案設計/生產/測試該注意到的問題. 本來我想翻一下 google 找一些比較完整的說明 forward, 除本身這個話題範圍很廣外, 不知是我關鍵字用錯還是怎樣, 找不到比較適合的, 就順便就把我覺得 PM 該知道, 該注意的寫出來.&lt;br /&gt;&lt;br /&gt;在有規模的系統廠, 組織的分工比較細, 硬體專案進行都有自己公司的標準 ISO 流程或 PDM/PLM 系統. 從前段規格確認, IP 專利分析規避, 合約檢查, 中段的設計檢查, 量場規劃, 到後段生產 flow, 生產 ramp up 該做的流程都蠻固定的, 但項目說起來頗多 (其實是非常多, 理論上所有 ISO 流程文件都會產出, 並且最後入到 DCC (document control center) 做統一管理). 像手持裝置 ("非" feature phone 類的) 變化又更多, 所以, 這邊介紹時會簡化很多.&lt;br /&gt;&lt;br /&gt;在這邊除了寫規格該注意的事項外, 我覺得有幾個非技術的事情 PM 要隨時注意, 例如:&lt;br /&gt;&lt;br /&gt;* 要保持對狀況的靈敏度 (例如: 要交付的目標是什麼, 目前共識有哪些, pending issue 有哪些, 問題的優先順序跟其他人是否一樣). 重點是, 不要讓自己或團隊狀況外. 你的產品會忠實呈現團隊狀況外的程度.&lt;br /&gt;&lt;br /&gt;* 認識 team member 的行為模式, 不見得每個人都是華盛頓 (either 沒事會去砍櫻桃樹或面對問題認錯), 自我感覺良好不是高官們的專利. 從辦公室打掃的, 到公司管理階層, 沒出大事之前大家的感覺都會很好.&lt;br /&gt;&lt;br /&gt;* 對自己不了解的問題, 不要輕易放水. 放水不代表不用負責, 只代表還不夠專業.&lt;br /&gt;&lt;br /&gt;* 要記得追蹤有風險的決定, 不要以為一開始沒事就沒事. 莫非定律出現的機會通常比你的運氣好. 如果要用趕工 (crashing) 或是同步作業 (fast tracking), 請記得讓大家知道這叫 fast tracking 跟 crashing, 是有額外 cost 的. 要記得警告大家風險成本是多少.&lt;br /&gt;&lt;br /&gt;* 問題能早解決就早解決, 拖到最後還是要解. 常見有人剛開始跟你說 ok, 但最後大家都得健忘症, 代價沒人願意承擔. 遇到這種情形, 請把深海魚油跟雞精準備好, 魚油給別人補腦力, 雞精留給自己熬夜吧 =_=&lt;br /&gt;&lt;br /&gt;雖然大家都知道這些, 但是常因為現實環境 (成本, 時間, 部門利害關係) 而犧牲. 但是, 不管如何, 還是要隨時注意. 下面每個主題, 都只簡單介紹該領域我覺得最簡要的部份 (也就是包括, 但不限於的意思啦):&lt;br /&gt;&lt;br /&gt;* 不要覺得規格確認是 one time work&lt;br /&gt;規格確認不是一件做完就不用管的事, 而是一件到產品 phase out 之前都可能會跟著你的問題. 因為可能發生的狀況太多, 有可能零件停產, 某批零件 quality 有問題, 客戶發現新的設計問題, 有新的法規等... 不過以項目來說, 主要下面幾點:&lt;br /&gt;&lt;br /&gt;** 硬體功能需求: 要有哪些硬體功能, 以及這些硬體功能的規格要求. 舉例來說: wi-fi 不是 chipset solution 決定就好, 輸出的 power 跟天線敏感度, 耗電量這些細節都要放到文件裡. 現在 wi-fi chipset 都會有 firmware 或是執行時要載入 firmware. Firmware 經常會有細小的差異跟 bugfix, 這些都會影響中段產品測試, 認證及產測規格. 如果客戶有指定或覺得重要的 test case (穩定在某個環境, 傳輸多少資料的效率或不中斷之類的測試), 請一定要做.&lt;br /&gt;如果 wi-fi 傳輸時要亮燈, 或是可以用 packet 喚醒 suspend (IP phone 標準) 狀態的 wi-fi, 這些都跟電路的設計相關. 通常設計階段還會跟硬體及機構件的 placement (晶片放在電路板哪些位置) 相關, 這些都會影響 schedule 跟最終客戶驗收的 quality, 請注意.&lt;br /&gt;&lt;br /&gt;** 與硬體相關使用者行為確認&lt;br /&gt;使用者介面分為兩個, 一個是純軟體的 UI, 另一個是跟硬體的互動 (通常是 LED/按鍵/Dial/track ball 等等). 拿 iPod 當例子來說, 當 iPod 在播放音樂時, 把耳機線拔掉, 音樂就會停. 這就是硬體設計 interrupt 支援軟體行為可能性的範例. 盡可能把所有 user case 釐清楚. 請千萬記住, 硬體是沒辦法跟軟體一樣說改就改. 軟體按 make 重新 compile 的成本很低 (至少一般人感覺很低啦 =_= ), 以為改硬體也是重新焊個元件, 改個電路, 加個電阻或換個 filter. 但是改硬體馬上就有原有料變廢料,重新驗証新料/電路的時間, 新洗板子, 打件驗証的時間, DFM (design for manufacturing) 變更, 這時間跟成本其實是難以想像的高.&lt;br /&gt;或許有人會提 rework 可節省一些驗證的時間, 但是問題是: rework 的 quality 通常不穩定, 很多驗證時會發生: 這是原有的問題, 還是 rework 的問題? 功能可能可以 rework 驗證, 但 DFM 可能還是要重新來一次才能確保 quality.&lt;br /&gt;&lt;br /&gt;** 使用環境: 裝置是手持式, 車用, 家用, 工業用, 玩具都有不同的測試規範. 主銷非洲市場跟用在俄羅斯的產品要做的測試重點也不太一樣. 請針對環境可能的需求, 讓客戶盡量描述清楚, 並跟相關人員討論增加一些對應的 test case, 以及對應的入料檢驗規範. 在環測測試中, 你會發覺大部分東西遠比你想像的容易壞, 而零件的價格跟品質大部分都是有道理的. 請記得, 零件供應商的產品規格不檢驗的問題在 "你", 客戶通常是不會找零件供應商的. 東西該摔就要摔, 該震就要震, ESD 該打多少就多少. 產品的 quality 控制就靠這些細節執行. 我也相信 PMI 說的 quality 是 design in, 不是 inspect in, 但事實是: 通常大家都覺得已經 design in 了, 直到 fuse 爆掉那一天.&lt;br /&gt;&lt;br /&gt;** 使用壽命: 使用壽命跟產品的成本 Life cycle 管理, 供應商管理, 售後服務都有關係. 跟產品的設計, 用料都有直接的關係. 機構料本身的 cycle 數使用限制, 到 SD 卡插槽的跟 SD 卡接點 pin 耐磨程度, connector 的鍍金厚度. 都是 base on 使用環境跟使用者行為來評估. 另外售後服務的時間, 跟備 customer support 的料的量, 都應該找相關部門以評估成本.&lt;br /&gt;&lt;br /&gt;** 認證: 認證大致有幾種 1. 安規 Safty 類 2. 不同國家進口的額外需求 3. 客戶營運商需求 (PTRCB/FTA/etc) 4. 綠色環保類 (Green, RoHS, WEEE) 5. 還有要掛 Logo 類 (Bluetooth/Wi-Fi/etc). 不同國家的安規規定, 也會造成產品包裝/標示/說明書問題, 甚至送認證的名稱都可能會影響後續進口流程及系列產品認證, 這些都在認證時要考慮.&lt;br /&gt;&lt;br /&gt;標準的安規例如 FCC/CE, 需要注意的地方是要跟安規實驗室 (lab) 討論 user test case. 產品的硬體版本, 及相關 accessory (尤其是變壓器/充電器), 連接 cable 等, 在進 lab 前請先確認. 同時, 進 lab 前記得要先做 pre-test, 如果 pre-test 沒過, 通常都是有 RD 沒說的隱藏問題, 一般來說送 lab 前還有這些問題, 這些問題都會影響最後 quality.&lt;br /&gt;&lt;br /&gt;安規看起來大家都在做很平常, 但其實可以幫你從外部 lab 角度看產品 EMC/EMI 跟穩定問題. 不同國家, 可能有不同的認證需求, 像手機進台灣還要做 NCC. 如果是包含 GSM/3G 功能, 但是使用的是 chipset 而不是現成的 module (如 原為 Siemens 的 Cinterion), CE 還會需要 GSM protocol 相關測試, 這類 protocol 測試一個 run 要上百小時. 如果包含多個 RF 射頻的智慧型裝置, 不同國家還有不同的功率規定及通報規費 and 額外的時間, 請把它算到你出貨的 schedule.&lt;br /&gt;&lt;br /&gt;Green 相關常見有 RoHS 跟 WEEE, RoHS 可依廠商宣告書管裡做自我宣告, 這部份每個公司對於廠商宣告書的 policy 跟管理工具都不太一樣. 當然 Lab 也有 X ray 掃描或化學方式可做分析, 但是大部分還是以供應商管理比較多. WEEE 除了要拆解說明書外,還要跟歐盟認可的廢棄物處理商簽約才算有效.&lt;br /&gt;&lt;br /&gt;要把 Wi-Fi 跟 Bluetooth 的認證 Logo 合法掛在盒子上, 通常都有額外的認證/測試流程. 想掛 Logo 你必須先加入對應組織的會員 ( Alliance 或是 SIG (special interest group)). 加入價錢從免費 (Bluetooth), 到數千 USD 不等, 你必須選擇適合你的 package. 然後才是根據掛 Logo 需要的條件做認證. 請記得, 有 Wi-Fi 跟 Wi-Fi certified 是兩件事. RD 說功能 ok 不代表你可以掛 Logo. 掛 Logo 不是紙盒上印就有的, 要 1. 加入會員, 2. 做過認證 3. 符合相關掛 logo 規定才算. 最後記得把成本算進去. 有些 Logo 還有 IPR 的費用 (DVD/CD/MP3/etc), 付費方式也不一, 請先注意.&lt;br /&gt;&lt;br /&gt;如果是你自己開公司作產品, 或公司本身先前沒有為 device 申請 MAC 專屬位置: 還需要先到 IEEE 申請一個 OUI (就是 MAC 位址前3 byte 啦), USB forum 申請一個 USB ID. 含通訊功能的手機或移動裝置的話, 還需要去申請一段空的 IMEI number 供使用.&lt;br /&gt;&lt;br /&gt;IEEE OUI: &lt;a href="http://standards.ieee.org/regauth/index.html"&gt;http://standards.ieee.org/regauth/index.html&lt;/a&gt;&lt;br /&gt;USB: &lt;a href="https://www.usb.org/members_landing"&gt;https://www.usb.org/members_landing&lt;/a&gt;&lt;br /&gt;IMEI: &lt;a href="http://www.babt.com/gsm-imei-number-allocation.asp"&gt;http://www.babt.com/gsm-imei-number-allocation.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-874849900319172224?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/874849900319172224/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=874849900319172224' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/874849900319172224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/874849900319172224'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/08/blog-post.html' title='硬體產品專案管理經驗分享 - 規格 (specification)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-7844984739637872568</id><published>2009-08-05T21:33:00.001-07:00</published><updated>2009-10-06T05:29:52.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>取得 Freerunner 原始碼及編譯完整 image 的方式 - 使用 mokomakefile</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px" id="BLOGGER_PHOTO_ID_5366706405321316642" border="0" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;原本當初 Openmoko 新手手冊預計會寫 20 篇, 前 10 篇是基本操作, 後 10 篇預計是寫 tool/build 相關的. 最早會想寫的原因有幾個, 包含: 減少大家問重複問題的機會, 補充網路上一些中文資料不完整的地方, 還有順便當自己備忘錄 :) &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;後 10 篇最後沒寫是因為覺得網路上資料其實夠多, 像 OpenEmbedded (OE) 跟 git 都很多說明資料在 blog (英文很多) 或是有 PDF 格式可供下載, 一般 developer 如果這類閱讀問題沒辦法解決, 要真正加入 FOSS community development 的開發會很困難. 另外有公司組織上功能區分的原因 ;-) &lt;/div&gt;&lt;br /&gt;&lt;div&gt;原先 document team 有 "理想" 要把 wiki 內容整理到 Floss manuals 這個 project (&lt;a href="http://en.flossmanuals.net/"&gt;http://en.flossmanuals.net/&lt;/a&gt;), 這樣只要再把整理的文件, 翻譯成中文, 這樣也比較會有一致性. 而 Flossmanuals 是另一個希望能讓 open source software 工具, 能有一個清楚説明公開文件的 project.&lt;br /&gt;&lt;br /&gt;最早 Openmoko 在公開 wiki 時, 就提供了 SVN 的 u-boot/kernel 及 based on OpenEmbedded (OE) 的 package 在網路上供人下載. 同一時間, 少量的 Neo1973 的工程樣品, 也免費送到各個重要的 Open source community (phase 0 user) 的開發人員手上, Rod Whitby 是其中的一位, 他就幫 Openmoko 寫了一個非常強力的 makefile, 目的是讓 developer 能夠用簡單的方式, 透過 OE 能讓每個 developer 都能用 "一樣" 的 code base, 自己 build 完整的 distribution (kernel + rootfs). 早期的 mokomakefile 需要先自行安裝及設定 monotone (版本管理軟體, OE 在 2008 年前使用), 後來 OE 改用 git 當版本管理程式, mokomakefile 幾乎能全自動的完成所有 build image 的程序. 個人第一次使用時覺得: 這個 Makefile 真是超神奇跟強大的工具, 雖然當初在我的舊 PIII 1.2 G NB 編了快 3 天, 但自動化跟穩定程度真是神奇, 值得大家試試看.&lt;br /&gt;&lt;br /&gt;* Mokomakefile 的主要說明網址: &lt;a href="http://wiki.openmoko.org/wiki/MokoMakefile"&gt;http://wiki.openmoko.org/wiki/MokoMakefile&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mokemakefile 全自動完成以下的幾件事:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;* 下載 OpenEmbedded 的 Bitbake, 及相關設定檔原始檔&lt;/div&gt;&lt;div&gt;* 從網路上各個 bitbake recipt 指定的 git/svn 位置, 及下載套件指定訂版本原始碼&lt;/div&gt;&lt;div&gt;* 下載 recipt 裏的 patch 及相關設定&lt;/div&gt;&lt;div&gt;* 設定/建立 Host 端 OpenEmbedded 所需的設定, 包含工作目錄, 暫存目錄, image 存放目錄, 套件存放目錄...等等&lt;/div&gt;&lt;div&gt;* 依照編譯設定檔, 套用 recipt 指定的 patch 後, 編譯所有的套件, 包含 kernel 及建立 rootfs 所需的所有套件&lt;/div&gt;&lt;div&gt;* 根據設定檔的設定, 編譯套件的 ipk/opk 檔&lt;/div&gt;&lt;div&gt;* 將編譯好 rootfs, 根據設定, 做成 flash 可接受的 image 格式, 以及完整 rootfs.tar.gz 壓縮檔&lt;/div&gt;&lt;div&gt;&lt;br /&gt;OE 的系統龐大, 如果工具不熟, 對於開發人員是很大的負擔. 熟悉後, 它的優點及缺點大致如下:&lt;br /&gt;&lt;br /&gt;* 優點: 能夠快速而且彈性的建立新的跨平台 embedded 專案套件, 不需要自己trace OE 套件都維持在最新的版本. 分散式開發架構, 國外開放/嵌入社群熟悉的工具及交流模式.&lt;br /&gt;&lt;br /&gt;* 缺點: 學習曲線長, 速度慢, 開發工作易被外部的套件更新影響, 把原先簡單的工作複雜化 (如不是自己開發的套件發生 bug, 原本只需要在 local patch, 重 build, 重新 package. 使用 OE 協調多個 team 可能要繞一大圈, 效率低而且容易溝通出錯)&lt;br /&gt;&lt;br /&gt;如果要使用 OE, 我建議還是讀一次 OE 的手冊, 尤其是第 7 跟第 8 章講授的系統概念部份.除了 OE 官方的英文外, 大陸 developer 有翻一份中文的, 如果習慣大陸編程語法的程式員們, 可以參考 &lt;a href="http://blog.chinaunix.net/u1/52172/showart_1346396.html"&gt;http://blog.chinaunix.net/u1/52172/showart_1346396.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Openmoko 版的 mokomakefile 現在由於無專職人員 maintain 加上 download path 有變更, 所以如果使用網站上的 mokomakefile (from freesmartphone) 會出現一些目錄找不到導致的 bitbake python 錯誤. 但是不用緊張, 還是有 community 的 team 負責維護相似的 mokomakefile. 目前主要有法國 Bearstech 的 SHR (&lt;a href="http://shr.bearstech.com/"&gt;http://shr.bearstech.com/&lt;/a&gt; or &lt;a href="http://shr-project.org/trac"&gt;http://shr-project.org/trac&lt;/a&gt;) 跟德國 Micky 帶領的 &lt;a href="http://freesmartphone.org/"&gt;freesmartphone.org&lt;/a&gt; &lt;a href="http://www.freesmartphone.org/index.php/Main_Page"&gt;http://www.freesmartphone.org/index.php/Main_Page&lt;/a&gt; . 不過據最近 (2009.8) mailing list 討論, Freesmartphone (FSO) team 未來可能會 based on SHR 的 distribution 開發上層 dbus based application framework, 不會自己再發行 FSO distribution.&lt;br /&gt;&lt;br /&gt;使用 mokomakefile (或是 SHR 的 Makefile) 很簡單, 但是時間可能很長 (一般來說, C2D 機器第一次 build 可能會到一整天), 大概步驟如下:&lt;br /&gt;&lt;br /&gt;* 在 ~ 下建立一個屬於該 distro 的目錄&lt;br /&gt;* 用 wget 把 &lt;a href="http://shr.bearstech.com/"&gt;http://shr.bearstech.com/&lt;/a&gt; Makefile 檔案抓下來, 放到目錄下&lt;br /&gt;* 根據自己 OS, 參考 &lt;a href="http://wiki.openmoko.org/wiki/MokoMakefile"&gt;http://wiki.openmoko.org/wiki/MokoMakefile&lt;/a&gt; 的說明, 安裝 host 端 (PC) 所需要的基本編譯套件. 每個 distribution 不太一樣, 例如 SHR 還需要額外的 curl. 基本上編譯時請先看 download site 對應的 readme, 以及編譯時的訊息, 缺什麼補什麼.&lt;br /&gt;* 然後 make 或是 make "套件名稱" 像是 make shr-testing 之類的&lt;br /&gt;* 然後第一次大概需要等一天, 依所使用的機器不同而不同. C2D E6420 大須需要 18-24 小時. 同時 download 套件可能需要數 G 的容量.&lt;br /&gt;&lt;br /&gt;編譯完後, 可以在 deploy 目錄找到, 如圖.&lt;br /&gt;&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 361px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5366710238458373634" border="0" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/Snpihx_DZgI/AAAAAAAABmE/lQOZhTzgihc/s400/make_shr_compile.gif" /&gt;&lt;br /&gt;如果你有多台電腦, OM 的 developer 會使用 icecc 來做編譯的工作, 靠著 5-7 台左右的 quad-core 電腦網路分散編譯, 把完整編譯時間縮短到一小時內. 這算一個很不錯的使用 linux 編東西 hint 跟 technique. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;在 2008 資策會創新應用服務研究所的開放原始碼行動平台研討會上, 我有整理一份 Openmoko 相關環境的介紹 &lt;a href="http://t0ny.net/openmoko/doc/Openmoko_enviorment_n.pdf"&gt;http://t0ny.net/openmoko/doc/Openmoko_enviorment_n.pdf&lt;/a&gt; 可以當參考.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-7844984739637872568?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/7844984739637872568/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=7844984739637872568' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7844984739637872568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7844984739637872568'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/08/freerunner-image-mokomakefile.html' title='取得 Freerunner 原始碼及編譯完整 image 的方式 - 使用 mokomakefile'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/SnpfCqb9mSI/AAAAAAAABl0/vSj_T62CQyE/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-853358612430405320</id><published>2009-08-02T20:08:00.001-07:00</published><updated>2009-09-30T01:40:09.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='m2m'/><title type='text'>被忽略的M2M (Machine to Machine / 物聯網)</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5365579257694387090" border="0" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/SnZd6CUT-5I/AAAAAAAABjE/GXR3bL9VXR8/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;近來好像大家的注意焦點都擺在小筆電, 或是智慧型手機平台這類產品上. 不論各家廠商如何行銷自己的功能 (多點觸控, 待機時間長, 便宜, UI 炫, 開機使用服務快不快) 但檢驗法則很簡單, 就是使用者 (人) 對於產品的接受度.&lt;br /&gt;&lt;br /&gt;小筆電 (x86 based netbook) 目前基本上廠商都只能在 Intel 跟 MS 定下的規則下面玩 (螢幕尺寸, 使用的周邊 chipset, 甚至 Windows 版本). 接下來半年應該是看看 ARM based 的 smartbook 面世後, 看的是一般使用者對於效能及功能上的滿意度. 還有 netbook 跟 smartbook 的 BOM/Retail 價格是不是能重新區隔出一個市場.&lt;br /&gt;&lt;br /&gt;Smartphone 智慧型手機看起來雖然家數很多, 目前能提供整合軟硬體的使用者體驗的其實只有 Apple (iTunes/App store) 跟 Blackberry (push mail). 不把 Google/Nokia/HTC/Samsung 算進去是因為 Google 不是自己作硬體, 而 Nokia 的 Ovi store 使用者太少, HTC/Samsung 並沒有使用者忠誠度高的軟體服務.&lt;br /&gt;&lt;br /&gt;最近一則新聞沒佔到什麼版面, 不小心閒閒沒事翻 news 翻到, 引起了我的注意. 就是 Verizon Wireless 跟 Qualcomm 要合資組一間專做 M2M 的公司. M2M 是 Machine to Machine 的縮寫, 字面上來說, 就是機器對機器. 寫到這邊, 覺得本篇的標題下錯了. 因為, 今年暑假最 hito 的就是 M2M 啦, 連小孩都愛的 M2M...變形金剛啦!!!&lt;br /&gt;&lt;br /&gt;基本上 M2M 涵蓋的範圍很廣, 簡單的例子, 從搭捷運用 RFID 卡到高速公路 ETC 易通機, 或者計程車隊服務都算 M2M 的基本應用. M2M 通常需要整合軟體服務架構及硬體設備, 以提供一個穩定的服務, 所以大部分都是以專案的方式進行. 這裡有一篇介紹 m2m scope 的內容可參考.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://cdnet.stpi.org.tw/techroom/analysis/2008/pat_08_A021.htm"&gt;http://cdnet.stpi.org.tw/techroom/analysis/2008/pat_08_A021.htm&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;因為 M2M 中間並不會有 "人", 所以系統穩定性要求很高, 軟體服務設計架構與測試也比一般的 utility 難度高很多. 因為不管是工業應用上的 SCADA 或是移動式車隊服務, 考慮通訊時的狀態/通訊 handshaking 時間窗口/連線穩定都是很大的挑戰. 但是由於資訊服務是內嵌在 M 的 (machine), 所以 M (machine) 只要工作, 就會 "固定" 使用到這些資訊服務跟頻寬, 提供這些服務跟頻寬的公司就可以收到 $$. 這個 ecosystem 裡, 一般通常包含以下的角色:&lt;br /&gt;&lt;br /&gt;* 硬體提供者: 製作硬體的公司&lt;br /&gt;* 通訊服務提供者: 通常是電信公司或是網路營運商&lt;br /&gt;* 軟體服務提供者: 提供特定的軟體後台, 以及通訊 middleware&lt;br /&gt;* System Integrator: 整合軟硬體服務&lt;br /&gt;&lt;br /&gt;目前專案 M2M 大概包含這些角色. 但是 M2M 是不是只有這樣呢? 前幾年因為專案的關係, 做過一些 M2M applications, 後來因緣際會 Project 剛好有機會接觸到 Dash Navigation 的公司 (前一陣子被 Blackberry 的 RIM 併購), 除了 GPS 導航軟體/通訊服務 (T-mobile/Google wi-fi network)/軟體後台 (JMS/Oracle) 外, 他們基本上扮演了第 5 種角色:&lt;br /&gt;&lt;br /&gt;* 整合資訊流提供者: 包含即時路況播送, 網路搜尋, 以及其他 LBS (location based service) 相關資訊提供給 device, 同時 device 也將最新的資料透過內建的統計資料庫及 trigger 將資料即時 feedback 回資訊提供者. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;傳統的 M2M 的資料都在原先建好的系統架構中流動, 跟外界基本上是隔絕的. 但是資訊流提供者的角色, 是將整合不同的資訊流 (政府即時路況/搜尋/車隊特定服務/ Telcom 網路) 不斷的將新的外界資訊 Push/Sync 到 Machine 中, Machine 也把資料回饋給外部系統, 讓 Machine 跟 Machine, 以及 Machine 跟人有新的互動可能性. 這也是目前許多 GPS/LBS 廠商, 想要整合的 "功能". 但是, 其實這是一個整合資訊流的新角色. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;現在除了 LBS (location based service) 外開始有另一個新名詞 real-time GPS. 也許以後支援這類動態 + 即時 + 雙向交換資訊的 GPS (PND) 會貼一個 real-time GPS, 然後 powered by T-Mobile (or other Telcom) 也說不定.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dash Navigation 提供不同的資訊流整合 (即時路況/搜尋引擎/來自各地的訊息) 技術, 透過客戶端 request 或將客製化的資訊 push 到每一台 device. 這個軟體 framework 是獨立在硬體之上的, 所以可以預見 RIM 以後, 有計畫提供這類的 LBS based push 服務 (push LBS?). &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;舉例來說, 這類服務除了可以幫你找附近哪間加油站便宜, 超商在特價外. 對商用人士的服務甚至可能幫你安排兩個人見面的最適當地點, 提供最有效率的評估, 提供建議, 並完成安排行程所有程序 (booking tickets/make reservations/etc).&lt;br /&gt;Verizon Wireless 跟 Qualcomm 的合資 M2M 是只是朝 MVPN 邁進, 還是會像新的整合資訊流提供者呢?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-853358612430405320?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/853358612430405320/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=853358612430405320' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/853358612430405320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/853358612430405320'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/08/m2m-machine-to-machine.html' title='被忽略的M2M (Machine to Machine / 物聯網)'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/SnZd6CUT-5I/AAAAAAAABjE/GXR3bL9VXR8/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-1270201485484008945</id><published>2009-07-27T22:04:00.001-07:00</published><updated>2009-11-30T08:06:33.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>PMP 唸書感想 - 2009</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5365579058083301138" border="0" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SnZduatUhxI/AAAAAAAABi8/H0yUiW70mmU/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;這一陣子離開 Openmoko 之後, 多了很多時間可以做這幾年計畫要做, 但是一直沒時間做的事. 生活也恢復到比較有趣的狀態. PMP 考試是我其中一個前幾年預計要做, 但一直沒做的事. PMP (Project Management Professional) 是一個專案管理的認證, 不是拍馬屁的縮寫 XD . 從 2000 年之後, 專案管理也一直是一個蠻 hot 的 topic, 我想大概是因為這十年來, 許多的公司原本的 operation 模式都遇到成長的瓶頸, 需要新型態的管理與加強原有組織資源的運用能力, 所以專案管理雖然不是什麼新的學問, 但是這幾年在一般公司才開始比較普及.&lt;br /&gt;&lt;br /&gt;對很多人來說, PM (project manager, 有些公司把專案經理叫 jm, 產品經理叫 pm) 就只是幫忙管 schedule, 協調人員/資源的一個角色. 但是實際上, 專案管理的範疇並不是只有這樣. 當然, 有去上過 PMP 課程的都知道 PMBOK 9 大流程: integration, scope, time, cost, quality, HR, communication, risk, procurement 跟 42 個子流程 (PMBOK v4). 看起來 9 個流程好像很多, 也不見得組織內會在 Job description 中遇到, 但是我自己的經驗是一定都碰得到, 只不過不見得是 PM 的執掌, 有些可能是其他 function manager 的勢力範圍. PMI 只是把整個 PM scope outline 出來, 這一點我覺得還不錯, 讓所有準備 PMP 的人有心理準備, PM 不是只把落落長的 schedule gantt chart 填出來就好. 就算要填, 可能也要把 critical path 跟 float/slack 一起確認出來, 不然考試就不會過 XD&lt;br /&gt;&lt;br /&gt;不過, 只要是流程, 就有 overhead 跟最小經濟規模. 這一點 PMI 隻字未提, 用一句 organization assets 就帶過去了, 也不管你的 assets 是 ISO 還是 CMMI. 還有如何整合 PMI 的 knowledge 到組織系統中, PM 知道這些東西 (像是 project charter) 的重要是一回事, 能讓想要引進專案系統的公司或組織, 提供一個友善的升級或是銜接方法也是很重要的. 我想一般 PM 管 project 內部的事情就管不完了, 應該沒辦法花太多時間對相關專案執行人員解釋每個流程的重要.&lt;br /&gt;&lt;br /&gt;在上課期間, 聽到 effective PM 跟 successful PM 這兩個名詞, 感觸還蠻多的. 因為很多人覺得 effective (有效率) = execution (執行力) = successful (成功) 這幾件事畫上等號, 誤以為把 resource 跟時間投下去, manager 們開始緊迫釘人, 不需要特別的 planning 跟 risk management, 不斷的變更 scope, 只要投入的 resource 夠, project 還是可以得到預期的成果. Effective 可以是一種 PM/Manage style, 但是不見得是專案 successful 的保證 (經常只是把錢燒光). 這幾個名辭中都有潛藏的意思跟條件, 不然他們就該是同一個字. 專案經理的職責, 應該還是要確認專案能如 project charter 設定跟 sponsor 的最終期望 (公司或專案成功) 來設定行為標準.&lt;br /&gt;&lt;br /&gt;PMP 考題跟模擬題很多問題很有趣, 剛開始讀會腦筋打結. 因為實務跟 PMI 的理想還有一段差距. 問的問題都很實務, 雖然不見得標準答案很實際. 哈哈... 不過, 撇開考試不談, 一個有經驗的 PM 應該是把盡量把答案準備好來等問題. 如果遇到問題再找答案通常都是災難. 當然無法預測的是風險的特色之一, 但是 PM 對大部分問題 (技術問題 or business 的問題) 應該心裏要有底. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;網路上很多 PMP 考試的準備方法, 我基本上也是 base on 這些方法. 因為以前微軟 :P 的試考太多了, 對 CAT 類型的考試還有 Prometric 都很熟啦 :P 加上以前 SD 的 70-300 或更早的 Windows Architecture 也是這類模擬兩可 = 看起來沒標準答案的考試. 就上完課當天就向 PMI 提出考試申請, 一個星期通過申請後, book 時間, 強迫自己念書. 雖然還蠻多人警告 PMBOK v4 剛改版上線, 等幾個月在考, 考試資訊會比較多. 但我實在等不及了, 想說做 PM 那麼久, 被 PMI 當掉也不過只是個被 PMI 當掉的 PM &gt;_&lt; 只是考試費 4xx USD...很貴的失敗代價 &amp;gt;_&amp;lt; 第一次 booking 時間約 2 星期後, 發覺唸不完. 趕快延幾天. 考試 200 題, 寫到 3/4 就覺得超累, 因為大部分都要想一下. 還好最後撐完而且有過...PMP 入手. 以前每次想說考完這一次, 就不要再考試了. 不過好像每次都有意外... =_=&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-1270201485484008945?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/1270201485484008945/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=1270201485484008945' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1270201485484008945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1270201485484008945'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/07/pmp-2009.html' title='PMP 唸書感想 - 2009'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/SnZduatUhxI/AAAAAAAABi8/H0yUiW70mmU/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3384895428336253647</id><published>2009-06-30T06:59:00.001-07:00</published><updated>2009-06-30T07:50:29.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>社群開發與嵌入式產品開發流程的衝突與妥協</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5348338547149860338" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/SjkdkmllbfI/AAAAAAAABJU/Pnbp9mAEc7Y/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu 'Tony' Tu&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;前幾個禮拜, 參加了資策會 OSS (經濟部工業局自由軟體產業應用推動計畫) &lt;a href="http://www.oss.org.tw/"&gt;http://www.oss.org.tw/&lt;/a&gt; 主辦的 FreedomHEC2009 (&lt;a href="http://www.oss.org.tw/dokuwiki/doku.php?id=freedomhec2009"&gt;http://www.oss.org.tw/dokuwiki/doku.php?id=freedomhec2009&lt;/a&gt;) . 今年在 Android 與 Moblin 的市場光環加持下, 加上工作人員也很努力的拉國外 key developer 來演講, 現場人數大概比去年多了一倍 (完全感覺不出來產業不景氣...哈哈).&lt;br /&gt;&lt;br /&gt;Greg Kroah-Hartman 跟其他主要幾位主講人, 其實講授的內容都很實在, 對 kernel developer 來說, 有很多有用的 tips, 例如這篇 kernel report:&lt;br /&gt;&lt;a href="http://www.oss.org.tw/dokuwiki/lib/exe/fetch.php?media=kreport.pdf"&gt;http://www.oss.org.tw/dokuwiki/lib/exe/fetch.php?media=kreport.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;提到以最近的 release 30 來說, 每天 kernel 平均增加 6500 行 131 個 changes, 這個數字看起來對一班人來說只是數字而已, 但是對很多公司的開發人員來說, 一直 trace 最新的 kernel 其實是有負擔的. 就台灣開發硬體產品的 cycle 來說, 大約開發一個全新的產品平均需要 6-8 個月, 以新 linux kernel release 週期為 15 週來看, 這一段時間 kernel 起碼已經跳了 1 到 2 個版本.&lt;br /&gt;&lt;br /&gt;換句話說, 即使產品一開始如果就使用最新 vanilla kernel, 到出貨時, 先為了符合 GPL 而開放原始碼, 然後更有心一點再作相關 driver/patch upstream 的工作, 但為了適應新的 kernel 變更, developer 也還是需要額外的工作時間去適應新版本. 如果有公司想要像 beagle board (&lt;a href="http://elinux.org/BeagleBoard"&gt;http://elinux.org/BeagleBoard&lt;/a&gt;) 一樣, 能夠讓產品直接 make omap3_beagle_defconfig 就可以透過 toolchain 編出 kernel 其實是需要時間了解 upstream 的模式. 主要包含:&lt;br /&gt;&lt;br /&gt;* porting 前先註冊硬體資訊 (mach id..etc)&lt;br /&gt;* 加入討論區, 適應 Linux community 的 coding/討論習慣&lt;br /&gt;* 你要送 code 到哪邊 upstream (這顆 AP (Samsung/TI/Freescale) 的 maintainer 是誰, review 流程大概是怎麼樣)&lt;br /&gt;&lt;br /&gt;這些都要實際 "加入" community (社群), 才能了解更多的細節. 這邊又卡到兩點 1. 開發人員本身的意願及英文能力 2. 製作產品的 RD 資源投入的時間是否應該在產品出貨後結束.&lt;br /&gt;&lt;br /&gt;我在網路上找到一篇還不錯介紹 arm linux porting white paper 的放在這裡, 有興趣的可以參考一下. &lt;a href="http://www.t0ny.net/foss/doc/porting/PortingLinuxKernel.pdf"&gt;http://www.t0ny.net/foss/doc/porting/PortingLinuxKernel.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;因為 OEM/ODM 特性做習慣的關係, 不需要面對終端客戶, 在台灣典型的都把產品出貨當成是產品投入 RD 資源週期的結束. 但這一點, 對 community 來說, 產品到手 (hacking) 才是軟體應用可能性階段的開始, 是不太一樣的. Community base 公司的產品 (buglabs/beagleboard or LEGO like!!!), 等於把第一個產品當成是產品線的頭, 再慢慢展開看 community 需要哪些產品, 再逐漸充實產品的內容, 軟體可能增加支援的 platform (Android/Linux/Windows CE...) or 硬體 (更多的模組). 雖然這類的應用模式, 早就存在於常需要客製化的工業電腦產業中, 但是包括 Openmoko 在內, 蠻多的 (or 一部分) 趨勢都是朝著將原先客製化的模式, 帶到標準消費性產品中. 當然, 以目前這幾年的景氣 (2009-), 跟這些公司目前的狀況來看, 整個 biz model 都還在試水溫的階段, 但是最起碼提供一個產品開發的有趣方向.&lt;br /&gt;&lt;br /&gt;一般只是拿 linux 當成是免費的 OS + 一堆好用的 utility 的一般硬體廠商而言, 是完全 or 至少一部分誤解了開放硬體的精神. 大部分廠商都停留在擔心自己的產品有違反 了 GPL 規定. 而不是利用 community 來開拓可能的市場, 及需要開放硬體專案的合作機會.&lt;br /&gt;&lt;br /&gt;另一個矛盾就是, linux kernel "community" 只會一直 maintain 最新 2-3 個 kernel 版本, 與個例子來說, &lt;a href="http://kernel.org/"&gt;kernel.org&lt;/a&gt; 是不會一直幫 2.6.18 上 patch, 而是只會 maintain 目前 (2009.06) 最新的 2.6.28-30, 然後以極快的速度 (跟 MS 系統比較) 繼續往新的 release 前進. 這也是與業界的一般方式, fork 一份 2.6.24/26 的 kernel 下來, 然後自己 maintain 自己的 tree 的一般開發 (非 community) 方式有很大不同. 一般完全 fork 然後 maintain 自己藏起來的 tree 方式最大的問題就是公司最後只有少數 RD 能 maintain/patch 整個 tree, 所以公司的產品能力跟擴充方向, 也會直接或間接會受到這些 keyman 的限制. Maintain 一個 distribution 其實就是一件 "事", 如果又有其他的工作 overlap, 自己 maintain distribution 只好挖東牆補西牆, result 跟 quality 都不會太好.&lt;br /&gt;&lt;br /&gt;當然在兩天的研討會過程中, 也反映出許多業界使用 Linux 開發, 跟融入 Linux 社群中的矛盾點, 主要的就是 release 原始碼 (源代碼) 的問題. 又想要 community 幫忙解決, 或是快速接受自己的硬體, 另一方面又不想或非常被動的 release source code. 當然 release source 有許多的問題, OM 都遇過. 包括產品中有相關 chipset 廠商的 NDA 問題. 不過這並不是無解, 或者說, 在產品開發選料前就要跟廠商談好, 不是產品要出了才進行 community friendly 工作.&lt;br /&gt;&lt;br /&gt;在 OM 專案中, 最好的例子就是 wi-fi driver source code, 因為 FOSS community 不喜歡 binary 的 driver, Atheros 當時又是以非常 community friendly 的方式 release wi-fi 的驅動程式原始碼 (align with mainline source), 所以就溝通協調專案內容後 (我們使用的 AR6k fw 版本是 2.x), 就請 Atheros 新 release 一份對應的 GPL driver 給 OM. 當然除了 GPL 版本外, Atheros 還有另一份只能 release binary 版的 driver, 這也是 chipset vendor 經營開放軟體 community 常見的手法.&lt;br /&gt;&lt;br /&gt;總而言之, 如果希望 Open Source Community 支援你想要接近 community 的產品, 我個人的建議是:&lt;br /&gt;&lt;br /&gt;* 提交硬體 community 開發時, 底線是開放 kernel 部分的 source code, 最簡單的 release 方式打成 tar ball, 或文明一點放在公開 git/svn 上.&lt;br /&gt;* 想辦法幫 community 或是對你的硬體有興趣的人, 解決他們的問題 (提供 documentation/跟 vendor 談 release 文件)&lt;br /&gt;* 了解跟 community 成員的溝通方式&lt;br /&gt;* 讓 key community member 盡早拿到硬體 (每間公司的策酪及考量不一樣, 但這的確是目前國際大廠 (you name it!!!) 為了接近 FOSS community 都在做的事), 但是不能期望這些 community key member 能提供有用的 feedback.&lt;br /&gt;&lt;br /&gt;當然, 以上純就有興趣建立品牌或是接觸社群開發的專案. 若只是 OEM/ODM, 只要 spec 跟 term 清楚, 問題很單純, 大部分的公司, 都不缺乏這類的經驗.&lt;br /&gt;&lt;br /&gt;很高興能在這類大拜拜場合 :) 遇到像是 matt_hsu 及 jserv, 以及目前在 0xlab 的 前 OM 優秀 developer (FOSS or not FOSS...haha). Real FOSS will be a life long way ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3384895428336253647?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3384895428336253647/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3384895428336253647' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3384895428336253647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3384895428336253647'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/06/blog-post.html' title='社群開發與嵌入式產品開發流程的衝突與妥協'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y3T3s33suM8/SjkdkmllbfI/AAAAAAAABJU/Pnbp9mAEc7Y/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2887558293067893138</id><published>2009-06-17T09:11:00.001-07:00</published><updated>2009-06-30T17:27:54.101-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><title type='text'>Open Platform Player</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5348338547149860338" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/SjkdkmllbfI/AAAAAAAABJU/Pnbp9mAEc7Y/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu 'Tony' Tu&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;最近所謂的開放平台解決方案真是越來越多了, base on linux 的, 數一數已經有下面幾家 player:&lt;br /&gt;&lt;br /&gt;* Intel: Moblin&lt;br /&gt;* Nokia: QT, oFono, maemo&lt;br /&gt;* Google: Android&lt;br /&gt;* Palm Pre (&lt;a href="http://opensource.palm.com/"&gt;http://opensource.palm.com/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;很多人可能不知道, Palm 的核心也是 linux, Palm 也有把 kernel 相關的 patch release 出來. 當然還有 LiMo 跟其他的 foundation, 但是 LiMo 是採會員制的 (Samsung's 採用 LiMo 後做出的 OMNIA), 會員才能取得完整的 source tree).&lt;br /&gt;&lt;br /&gt;就連學習曲線很高的 OpenEmbedded 都有蠻多 company 開始 adopt (包括 MontaVista 開始用 bitbake), 雖然 OE 有時不見得是開發嵌入產品最適合的工具.&lt;br /&gt;&lt;br /&gt;下面這幾間都是這幾年(最近)比較受到注意的公司, 也有用到 package system (like OE).&lt;br /&gt;&lt;br /&gt;* Beagleboard &lt;a href="http://beagleboard.org/"&gt;http://beagleboard.org/&lt;/a&gt;&lt;br /&gt;* Gumstix&lt;br /&gt;* Bug Labs &lt;a href="http://www.buglabs.net/"&gt;http://www.buglabs.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這幾間公司都有一些蠻有趣玩 embedded 的 idea 跟 community 互動的方式. 大家對 open source 及 community development 有興趣可以參考.&lt;br /&gt;&lt;br /&gt;另外, 最近有一家做 open hardware 的樂器公司還蠻 inspire 我的, 他不是做一般的 embedded, 他是做樂器類的應用 &lt;a href="http://www.zoybar.net/"&gt;http://www.zoybar.net/&lt;/a&gt; . 我一直覺得做音樂的很多工具/模擬器/社群經營都比一般的 embedded 進步 :-P 軟體類如 propellerhead 的 reason 跟 ableton live, 硬體類也有一堆, 例如 &lt;a href="http://www.generalguitargadgets.com/"&gt;http://www.generalguitargadgets.com/&lt;/a&gt; , 可能是音樂跟流行本身就是需要交流產生新的火花吧, 跟單向的生產 -&gt; 銷售是不太一樣的行為.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2887558293067893138?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2887558293067893138/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2887558293067893138' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2887558293067893138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2887558293067893138'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/06/open-platform-player.html' title='Open Platform Player'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y3T3s33suM8/SjkdkmllbfI/AAAAAAAABJU/Pnbp9mAEc7Y/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6011205313779416028</id><published>2009-05-10T19:55:00.001-07:00</published><updated>2009-05-11T01:52:12.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Developing a FOSS / Linux friendly embedded hardware - component selection</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5334395820587118642" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SgeUvGlscDI/AAAAAAAAA-o/97u06GQ8LOw/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu 'Tony' Tu&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Hardware component selection seems like a easy job after people have google and digikey. But in real world, lots reason that make googled/digikey search result dose not mean it could be used in the mass production product. Mostly is not technical reason, but sourcing/SCM reason. Component sourcing/SCM (supply chain management) is one of the critical issue that will affect your design could go into real mass production or not.&lt;br /&gt;&lt;p&gt;Following are some aspect was considered during component selection process.&lt;br /&gt;&lt;p&gt;* Business relation:&lt;br /&gt;Module vendor/chipset vendor always put business (either real money or just marketing) as first priority. Usually vendor or distributor will spent FAE/RD/support resource at confirmed customer, so it's not only about your money while you using their products into yours but also their money as well. Most hardware vendor need forecast required material quantities to&lt;br /&gt;drive their upstream supply chain as well. We take LCM (LCD module) as example, if you buy module from vendor, they need to prepare:&lt;br /&gt;&lt;p&gt;* Flex print circuit cable&lt;br /&gt;* LCM frame parts&lt;br /&gt;* LCD Controller IC&lt;br /&gt;* Touch panel controller chips and glass&lt;br /&gt;* Many small components&lt;br /&gt;* Negotiates with their factory in order assemble/delivery in time&lt;br /&gt;&lt;p&gt;Sometimes hardware providers will concern about of losing trading secrets/expose bugs with "open source" device. You have to clearly define about delivery target, what could release and what couldn't release to end customer, including:&lt;br /&gt;&lt;p&gt;* What is hardware delivery item/firmware version?&lt;br /&gt;* Who should finish driver to specific firmware version?&lt;br /&gt;* Documentation/source under what type license&lt;br /&gt;* How to co-work on missing delivery? (Like GPL'ed version driver and re-distributable documentation).&lt;br /&gt;&lt;p&gt;All above will be continuous process during project period.&lt;br /&gt;&lt;p&gt;* Specification: Sometimes online chipset/module manuals/specifications are not updated one (or in-correct/non-function), especially those not release through official web site. There are some components I called: paper components, means not put into mass production yet or only vendor want to test the market response. Also, you have to understand specification very&lt;br /&gt;well, because you also have setup acceptance standard/rules during whole process. Most embedded hardware won't fulfill every specification at design stage (durability/sensitivity/environmental tolerance/may others), you have to negotiate/track along the way.&lt;br /&gt;&lt;p&gt;Some vendor don't have linux friendly policy, you might not get source code of driver/testing tool. You may need to develop your own version, and find a way verify the specification before your linux driver ready.&lt;br /&gt;&lt;p&gt;* Unique/hard to source parts: If you using component that very unique in specification (like special cap value or fancy function). And this component could help RD simplify design or make life easier. For most developer, make mass production is not their responsibility, design good product is. Tricky part is: in many cases, using hard to source part will cause lots sourcing/logistic over head later (lead-time), and you might need to postpone whole production because of single component that seems harmless at design stage. You have to be very careful using unique/hard to source part if really want make a mass production-able device.&lt;br /&gt;&lt;p&gt;Some companies like using unique part as a lock (like own design function chip) to protect product, or using it as tool (like their own variation of PMU) to simplify later product design/verification cycle.&lt;br /&gt;&lt;p&gt;* EOL (end of life): Just like your cellar phone, electronics device chip life cycle is not long as you think. Most manufacture using the same part that "popular" device used, if "popular" device phase out (usually less than 1.5 years), sometimes component lead time will dramatically increase, because vendor will manufacture the part for you instead of moving stock around market. You your product design -&amp;gt; mass production period is too long (over 1 year), you must be very careful track your original deign-in part EOL date or specification change. Sometimes, you never get updated until you place next order. EOL is killer for hardware verification, for software need to have another round of test plan/driver parameter adjustment.&lt;br /&gt;&lt;p&gt;Some experienced people might ask: why so many industrial devices could grantee over 5 years or longer availability/replacement, answer is easy: they buy more as stock and sale product in higher price. So when manufacture stop fabricate component, they could still have on stock.&lt;br /&gt;&lt;p&gt;* Price: Including payment term/delivery method/tax. You could not get good price with reasonable quantities. This issue has nothing to do with software ;) but for PM, might need to keep an eye on it.&lt;br /&gt;&lt;p&gt;* Technical support: Most chipset/module will assign technical (FAE) and sales contact window after business cooperation. You may ask support from technical contact, usually including:&lt;br /&gt;&lt;p&gt;* Hardware testing/verification support&lt;br /&gt;* Driver required document (may not release to public, but release to you as reference)&lt;br /&gt;* Source code that under GPL license (or co-work develop one)&lt;br /&gt;* Co-work on product development schedule (firmware&lt;br /&gt;release/test/verification/bugfix/function add...etc)&lt;br /&gt;&lt;p&gt;Most of time component vendor only have driver to specific linux version (usually not updated one), and may use some strange rootfs combination. You have to double check what is "We have linux driver" means with FAE.&lt;/p&gt;&lt;p&gt;Component must have at least one of following charactics that makes it community/developer friendly component :)&lt;/p&gt;&lt;p&gt;* Full documentation, release in creative commons or re-distributable license, accessible from public Internet web site&lt;/p&gt;&lt;p&gt;* GPL'ed driver source, and driver already in upstream linux kernel tree is best&lt;/p&gt;&lt;p&gt;What is not acceptable is: binary driver and all documenation (user manual/datasheet/etc) under NDA, that developer could not easily track source and debug it. Sometimes vendor will only provide compilied/kernel specific driver, this is not acceptable format to FOSS developer.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6011205313779416028?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6011205313779416028/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6011205313779416028' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6011205313779416028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6011205313779416028'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/05/developing-foss-linux-freindly-embedded_10.html' title='Developing a FOSS / Linux friendly embedded hardware - component selection'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/SgeUvGlscDI/AAAAAAAAA-o/97u06GQ8LOw/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-5085868459320963302</id><published>2009-05-07T21:58:00.001-07:00</published><updated>2009-05-11T01:21:56.120-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Developing a FOSS / Linux friendly embedded hardware - documentation and source code</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5333317177819828210" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/SgO_t1Jwj_I/AAAAAAAAA-c/uQIx4LdHZX0/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu 'Tony' Tu&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;During past few years, I have been through all kinds of challenge while develop an embedded hardware project. Most software people do not need to know (also don't want to know ;) ) the difficulty and potential problems/issues about design/verification/component sourcing/supply chain/factory/quality control in hardware (or embedded hardware). The reason using English in this series posts because I think it will help more community people have general ideas about how hardware industry works, and also how to make requirement if want to provide a linux/open source friendly device to community (another reason: I could type faster :P )&lt;br /&gt;&lt;br /&gt;For FOSS/Linux projects, there will be more requirements (sometimes special support) that related to hardware vendor (component or chipset) in order to get project process smoother also avoid potential IPR issues.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Recently, open source, open platform and some make schematics publicly (like Openmoko or beagle board) already a trend nowadays, but open source itself and hardware product provide schematics is not new concept. 20 years before, most 3C electronics still provide schematics as part of product; my Apple II+ also came with several manuals that contained full product details. &lt;/p&gt;&lt;p&gt;Since more electronic circuit embedded into IC, also devices became more complex. Instead of fixing it, people throwing devices away once it became non-functional. And what most customers used to are: simple device, limited function, with limited way to used it. Not like camera today ;) even have wi-fi transmission/gps capability.&lt;br /&gt;&lt;p&gt;Also more and more IPR enforcement process inside/outside company; branding company may not own full product knowledge and rights because out source the design to ODM company, and re-distribution rights of related documents. So, there is more and more technical (trading secrets/legal/IPR) and non technical (business requirement for product) barrier make public hardware information required by software/community development become difficult.&lt;br /&gt;&lt;p&gt;For people developing software that related to hardware, need following information from hardware (at least one of following item will be required):&lt;br /&gt;&lt;p&gt;* Complete documentation about component (chipset/module), document may need&lt;br /&gt;re-distribution rights, or release under creative commons&lt;br /&gt;&lt;p&gt;* Driver source code (boot code and kernel driver), under GPL is best. But usually you only could get reference code from vendor with other license and also under NDA &lt;p&gt;Effective documentation will contains all necessary information (initial setting/registers/gpio/usage conditions), and you have re-distribution rights. A lot of component documentations were under NDA (sometimes even you could easily acquired from Internet, but you still under NDA), and you have to communicate to right people get the approval for re-distribution rights.&lt;/p&gt;&lt;p&gt;Usually, component/chipset vendor will provide following solution for&lt;br /&gt;FOSS/Linux hardware: &lt;/p&gt;&lt;p&gt;* Component/chipset vendor might provide you a striped version of document that with full required information and you could re-distribute (very common for Intel, but rare for most embedded application processor vendor)&lt;br /&gt;&lt;p&gt;OR&lt;br /&gt;* Provide documentation and full reference code (usually Windows mobile), but you could NOT re-distribute either one, you must write your own version&lt;br /&gt;&lt;p&gt;OR&lt;br /&gt;* Provide a stripped GPL version of driver (means, some function was hidden - you never know). This is not ideal, but acceptable, sometimes.. &lt;p&gt;OR&lt;br /&gt;* Provide driver porting service, provide you binary and dynamic load-able driver with limited parameter information, this is not preferred/friendly format for FOSS community.&lt;br /&gt;&lt;p&gt;For module like wi-fi/GSM/Bluetooth, usually you need to know interface protocol (SPI/UART/USB/I2C), initial method, commands. For component like application processor/graphics processor/power management unit, you will need full documentation to provide a community friendly hardware product.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-5085868459320963302?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/5085868459320963302/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=5085868459320963302' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5085868459320963302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5085868459320963302'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/05/developing-foss-linux-freindly-embedded.html' title='Developing a FOSS / Linux friendly embedded hardware - documentation and source code'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_y3T3s33suM8/SgO_t1Jwj_I/AAAAAAAAA-c/uQIx4LdHZX0/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-891954804503209238</id><published>2009-04-23T06:46:00.001-07:00</published><updated>2009-04-23T07:07:25.781-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>一篇有意思的 Matrix (駭客任務) 影片分析</title><content type='html'>這幾天跟朋友因為討論一些粗淺的神學, 哲學問題, 又討論到 Matrix 這一部我很喜歡的電影, 以前我對這一部電影非常著迷 (and still), 所以會去網路找一些有趣的 review 來讀, 這一篇是我覺得寫的很好的, 然後寫信給原作者讓我翻成中文, 以前這篇放在當代的版上 ( &lt;a href="http://www.modernmusician.com/forum/showthread.php?t=21417&amp;amp;page=2"&gt;http://www.modernmusician.com/forum/showthread.php?t=21417&amp;amp;page=2&lt;/a&gt; ). 原 post 如下:&lt;br /&gt;&lt;br /&gt;-----------------------&lt;br /&gt;&lt;br /&gt;以下翻譯自 &lt;a href="http://corporatemofo.com/media_and_mediocrity/the_matrix_reloaded_the_corpor.html"&gt;http://corporatemofo.com/media_and_mediocrity/the_matrix_reloaded_the_corpor.html&lt;/a&gt; 此由 Ken Mondschein 授權我中文翻譯此文，並作為非商業用途使用.&lt;br /&gt;&lt;br /&gt;網路上也流傳一份有關 Matrix 3 的劇情說明，疑似試片影工作人員外流的劇情，以下網站中，有簡體中文翻譯第 3 集劇情，如果不想知道劇情的，請勿進入!&lt;br /&gt;&lt;br /&gt;==========================================&lt;br /&gt;在去看 Matrix: Reload 之前，我對於第二集是不是跟第一集一樣，有出色的特效跟打鬥畫面，並不是那麼在意。在第一集中，故事其實充滿著 Gnostic 的二元論哲學思&lt;br /&gt;&lt;br /&gt;想。我比較關心的是 Wachowski 導演兄弟怎麼樣延伸原先的有趣故事，而不是一堆有阿沒的電影效果。那些武打啦，慢動作閃子彈啦的炫程度，遠比不上把我們這個世界，直接說成是假的來的猛。那些特效跟功夫打鬥，其實都是紅色藥丸 的糖衣，讓高中生跟一般人比較能接受這部電影 (自從我開始學習武術之後，發覺有許多超現實的隱喻在功夫裡面。像 Thibault's 的神秘圓圈走位方式還真是有趣。&lt;br /&gt;&lt;br /&gt;注: Thibault's &lt;a href="http://www.dctkd.org/bibliography/re....cfm?pubID=260"&gt;http://www.dctkd.org/bibliography/re....cfm?pubID=260&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;雖然大部分的人看不懂 Wachowskis 導演兄弟在 Reloaded 這一部片要表達什麼，注意力也都集中在公路追逐的畫面。但 Reloaded 並沒有讓我失望，那些畫面對我來說還好，比較驚訝的是那兩兄弟將死海捲軸 (Dead Sea Scrolls) 跟俄利根 (Origen...註)&lt;br /&gt;&lt;br /&gt;的神學理論巧妙地用在劇本中，實在是非常聰明的想法。我明白劇中東出現一個人物，西出現一句的劇本實在很難令人了解。而劇情，只在飛車追逐跟動作畫面的休息時間出現。下面是對 Reloaded 這部片的一點解釋，如果你還沒看 Reloaded，請先忍一下吧!&lt;br /&gt;&lt;br /&gt;Martrix 基本上就是基努李維的地下世界之旅 (跟阿比阿弟暢遊鬼門關蠻像的)，如果 Neo 除了變超人那招外，帶著阿弟回到 Matrix 應該會更有趣。在金枝 (Goloden Bough...註) 書中有女預言家，在 Matrix 中有 Oracle 引導 Neo 進行它的旅程 (Oracle 可能並不如表面上看起來那麼善良，即使她沒惡意，但是把 Neo 拖下水也有它的一份)。&lt;br /&gt;&lt;br /&gt;Neo 的第一個任務就是從 Merovingin 手中解救 Key Maker (Randall Duk Kim 扮演)，Merovingian 是 Matrix 上一個版本所留下來的背景服務程式 (Merovingians 是 Frankish 王朝的統治者，後來被查理曼 (Charlemagne ) 大帝家族所繼承 (包括有卡洛琳 (Carolingians) 王朝及之後的卡佩 (Capetians) 王朝，他們相信自己有耶穌的後裔血統)。在我常去買燕麥捲跟豆奶的健康食品店裡面，大家都認為 Merovingian 是 Neo 的前身。但是從 Merovingin 在電影中對於人類情慾如此有興趣，我想到聖經創世紀 6:4 節中的內容: "那時候有偉人在地上、後 來 神的兒子們 、 和人的女子們交合生子、那就是上古英武有名的人 ........"。而天使與人的交合後，產生了許多的怪物 (吸血鬼跟死靈)......對應到劇情，就是以前 Matrix 程式所留下來的那一堆無法刪除的程式。從線索中 ( 即使 Merovingian 是前個世界留下來的人，它角色仍然像是冥王 Hades 一樣 (由他老婆叫 Persephone (冥后) 可知，掌管著地下世界的鑰匙。像是特洛伊 (Troy) 戰爭中的勇士 Aeneas 的嚮導 Sybil 女巫，給 了Aeneas 的金色樹枝，讓它順利進入地下世界。Neo 也利用 Key Maker 順利的進入 Matrix 系統中心。&lt;br /&gt;&lt;br /&gt;接著經過一連串的戰鬥和爆破畫面後，Neo 終於殺進 Matrix 的核心，然後遇到了 Matrix 的建造者 Architect。如果你以為在 Matrix 中 Architect 是扮演上帝的角色，那你就錯了。從 Gnostic 派的看法中，建立世界以奴役人性的當然是撒旦而不是上帝。Architect 放出那一堆八爪章魚來毀滅 Zion，也代表開啟世界末日的序幕。我猜第 3 集 (Revolutions) 中會揭露誰在 Architect 後面搞鬼，那個人就是把 The One 送進 Matrix ，我猜它長得一定很像 Neo (譯註)。&lt;br /&gt;&lt;br /&gt;其實重點是 Architect 跟 Neo 說的是真的還是假的，他說 " 99% 的人都相信 Matrix 是真的，但是還有 1% 的人不相信這個虛擬的世界 (相對於少數 Gnostic 教派的信仰者)。所以 Matrix 系統會變得不穩定，隨時有當機的危險" (所以電影中，在 Zion 出現的人多半是有色人種。如果你是白人，住在郊區的住宅區，開著你在 Matrix 的休旅車到 Matrix 的高爾夫俱樂部.....那幹嘛沒事找事懷疑自己所處的世界是不是真的?)&lt;br /&gt;&lt;br /&gt;所以 Matrix 容許這些不相信 Matrix 系統真實性的人轉移到 Zion，然後他們可以定期清除 Zion 這些不合群的人。同時 Matrix 也創造出 The One 傳說，而 The One 其實是為了增強 Matrix 人性化，讓 Matrix 的存在更穩定的設計。然後 The One 就可以啟動 Zion 的毀滅程序。在馬雅文化及佛教中，這種滅世後重生想法經常出現，在馬雅文化中，目前我們正處於第 5 次循環，而第 6 次循環從 2016 年開始。&lt;br /&gt;&lt;br /&gt;利用 Zion 跟救世主的預言，建立另一層 Matrix 的概念，其實出自於 French 哲學。這電影使用了波德來爾 (Baudrillard) 摹物與摹像 (Simulacra and Simulation)，並加入了傅科 (Foucault) 和達希達 (Derrida) 的結構與解構主義的觀點。在他們的理論中，系統對於語言及其他社會功能的限制，只是間接展示控制權的工具。而預言本身就何其他的預言一樣，是信仰的一部分。John Zerzan 曾寫過信仰的目的在於操作符號 (signs)，而那些預言也包含了某些控制目的。Zion 在 Matrix 中是一個應許之地，脫離了善惡的戰爭，人們身處其中而不會疑問存在的世界是否還是真實的。&lt;br /&gt;&lt;br /&gt;要了解 Matrix 中的世界，還必須了解 Asimov's (埃席克•艾西莫夫（俄裔美籍，1920-1992) 的三大機械人定律 (Laws of Robotics)，機器人如 Smith 之流，並沒有自由意志，即使脫離了 Matrix，他還是要苦苦追殺 Neo (在許多神學理論中，天使和許多其他具有神格的東西並不像人一樣擁有自由意志)。Morpheus (作夢之神) 在第一集說那些機器將人囚禁起來，當作生物電池之類的說明根本是放屁。機器統治世界之後還將靈魂思考關在 Matrix 中，是因為他們本來就是創造來服務人類，而且機器本身還是需要人來做一些選擇。所以機器並無法摧毀人性 (靈魂)，反而需要人來做一些選擇。&lt;br /&gt;&lt;br /&gt;正如 Architect 所說的 Neo 不是第一個，而是第六個.....但為什麼是第六個呢? 答案就是 Neo 之前的化身代表 Five Books of Moses 代表聖經中的舊約。 Neo (代表救世的基督，也代表著新約時期)，跟他前面幾代 Neo 不同的地方在於他具有 "愛" (希臘文中的 eros) 的能力。在 Origen of Alexandria 的神學理論以及早期的基督教徒筆下，耶穌基督因為愛而降世救贖人性 。而 Neo 單字本身代表著 "新" 或換言之的新約時期。 Matrix 在這一次又一次的循環中，也遇到一個會為了 Trinity 而毀滅人性的不合邏輯決定的 Neo。[Note to the theology geeks who've been e-mailing me:&lt;br /&gt;&lt;br /&gt;I know the difference between eros and agape, but Origen used both terms for reasons I'd have to delve into pre-Socratic philosophy to explain.]&lt;br /&gt;&lt;br /&gt;當 Architect 給 Neo 選擇的時候，是讓他選擇純機器世界，或純人類世界，而不僅把 Neo 變成能重新清除並啟動 Zion 的工具，。Architect's 說 The One 的目的在於清除所有的人性，但是由於 Neo 具有人性的部分，所以機器並無法控制，讓 Matrix 間接變得不是真的能準確預測。Neo 在 Origen 的神學理論中就是基督的化身，能打破生死間的循環，讓人性有一個新未來。在影片的最後 Neo 跟 Smith 先生，都在所謂的 "真實" 世界得到了一樣大的力量，也間接證明了 Matrix 模擬不只一層，所以 Neo 在這兩層都有力量。&lt;br /&gt;&lt;br /&gt;一些有趣的花絮:&lt;br /&gt;* Neo 跟 Trinity 在拱廊下愛愛的畫面，和馬澳其賽的三位一體圖有異曲同工之妙 (原圖請參閱原文，而說明請見 &lt;a href="http://ceiba.cc.ntu.edu.tw/th9_207/w...messages/5.htm"&gt;http://ceiba.cc.ntu.edu.tw/th9_207/w...messages/5.htm&lt;/a&gt;&lt;br /&gt;* The One 來自機械世界的說法，巧妙地讓基努李維避免掉許多無法表演的內心....(程式) 運作戲碼。&lt;br /&gt;*在來自 St. Augustine's 的神學理論中，像是 Oracle 跟 Neo 的預知能力都可以得到很好的解釋。&lt;br /&gt;*j我看電影的時候，旁邊坐了一個非常可愛的女孩&lt;br /&gt;&lt;br /&gt;在第三部片子應該會揭露一些迷團:&lt;br /&gt;&lt;br /&gt;* 誰在 Architect 後面搞鬼&lt;br /&gt;* Neo 必須要做出一些選擇，但重點是 "選擇是什麼"&lt;br /&gt;* 正邪間的大戰必定爆發，但打完後呢?&lt;br /&gt;* Agent Smith 到底是幹嘛的? 他有類似驅魔的能力 (....一人方陣兵團)，但是我打賭他會和 Neo 結盟.....&lt;br /&gt;* Neo 為什麼會有能力在現實世界中，把機械章魚幹掉?&lt;br /&gt;* Tank 怎麼掛的?&lt;br /&gt;* Link 會再次見到 Zee 嗎?&lt;br /&gt;* Niobe 會離開 Jason Lock 回到 Morpheus 的懷抱嗎?&lt;br /&gt;* Gloria Foster (Oracle) 怎麼辦? 也掛了嗎? (他在 Reloaded 中拍了有不少的鏡頭， 但 Revolutions 卻沒有多少鏡頭)&lt;br /&gt;* 教士服會變成流行服飾嗎?&lt;br /&gt;* 那位給 Neo 湯匙的小沙彌有什麼關鍵性的意義嗎?&lt;br /&gt;* Neo 會殺了 Bane 嗎? Bane 所損毀的 Zion 防禦有多嚴重&lt;br /&gt;* 誰帶 Morpheus 去找 Oracle 的?&lt;br /&gt;* 在第 2 集的 "真實" 世界如果也是假的，是不是有一層疊一層的 "Matrix" 呢.....(譯註: 果然是名符其實的 Matrix...Hehehe....)?&lt;br /&gt;* 如果第 3 集 Zion 確定是假的，那麼 Neo 會將那些人帶到真的的世界嗎 (當然再怎麼樣會扯，這都是一部電影，他們當然跑不出來)&lt;br /&gt;* Neo 會突然醒過來說 "幹，你一定不相信我做了一個什麼夢....?"&lt;br /&gt;&lt;br /&gt;註 Origen of Alexandria 的參考網址 &lt;a href="http://www.christian-assembly.org/se...0030309-03.htm"&gt;http://www.christian-assembly.org/se...0030309-03.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;註: 西元843年凡爾登協約(Treaty of Verdun)將卡洛林王朝(Carolingian)劃分為法蘭西(France)與日爾曼(Germania)&lt;br /&gt;&lt;br /&gt;參考網址:&lt;br /&gt;查理曼大帝 &lt;a href="http://homework.wtuc.edu.tw/~wenlurg/forghis/0226-6.htm"&gt;http://homework.wtuc.edu.tw/~wenlurg/forghis/0226-6.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Gnostic 跟金枝 (Golden Bough) 說明 &lt;a href="http://deepskies.virtualave.net/orig...hers_3zoro.htm"&gt;http://deepskies.virtualave.net/orig...hers_3zoro.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lsmchinese.org/big5/07onl...s/3-1/3101.htm"&gt;http://www.lsmchinese.org/big5/07onl...s/3-1/3101.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;創世紀 6:4 節，有關諾雅方舟的故事 &lt;a href="http://www.chinachristianbooks.org/"&gt;http://www.chinachristianbooks.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kabbalah &lt;a href="http://god.hifate.com.tw/icp/icp46.asp"&gt;http://god.hifate.com.tw/icp/icp46.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Architect 在資訊科技產業 (IT) 代表的是能整合許多不同知識的資深工程師，台灣常翻成架構工程師&lt;br /&gt;&lt;br /&gt;譯註: 我反而猜它長得像 Trinity (Most the Guy think Trinity should be the Guy, Right? ^_^ )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-891954804503209238?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/891954804503209238/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=891954804503209238' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/891954804503209238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/891954804503209238'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/04/matrix.html' title='一篇有意思的 Matrix (駭客任務) 影片分析'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-9001351290598814458</id><published>2009-04-23T05:51:00.001-07:00</published><updated>2009-06-18T17:49:04.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>北京記遊 2009 04</title><content type='html'>最近 project 告一段落, 有時間到處走一走. 剛好有朋友在北京工作, 以前出差都在大陸南方跟西邊的城市 (上海/深圳/武漢/西安...etc), 也沒到過北京 + 外公也算北京人, 所以就趁機到北京感覺一下大陸首都的氣氛.&lt;br /&gt;&lt;br /&gt;&lt;table style="WIDTH: 194px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="BACKGROUND: url(http://picasaweb.google.com.tw/s/c/transparent_album_background.gif) no-repeat left 50%; HEIGHT: 194px" align="middle"&gt;&lt;a href="http://picasaweb.google.com.tw/nengyu.tu/20094Beijing?feat=embedwebsite"&gt;&lt;img style="MARGIN: 1px 0px 0px 4px" height="160" src="http://lh6.ggpht.com/_y3T3s33suM8/SeVrcAd1F-E/AAAAAAAAA7M/CfgDgJ4lTQc/s160-c/20094Beijing.jpg" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="FONT-SIZE: 11px; FONT-FAMILY: arial,sans-serif; TEXT-ALIGN: center"&gt;&lt;a style="FONT-WEIGHT: bold; COLOR: #4d4d4d; TEXT-DECORATION: none" href="http://picasaweb.google.com.tw/nengyu.tu/20094Beijing?feat=embedwebsite"&gt;2009 4 beijing&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;北京的空氣感覺蠻像 LA 的, 都是那種乾乾的空氣. 然後地鐵很方便, 聽說是奧運前把整個路網完成. 除了長城跟 13 陵外, 幾乎所有的重要景點都可以坐地鐵到達, 算是非常方便. 可能北京經過奧運洗禮的關係, 整體的環境跟人文素質的確比一般人所認知的大陸城市要好很多. 從地鐵上拿 iPhone 跟 Nokia/Blackberry 的人數, 就可以感覺的出來 :)&lt;br /&gt;&lt;br /&gt;當然不免俗的, 我也紫禁城/長城/13 陵/前門大街/王府井/頤和園/798 等等地方走了一圈. 到大陸腳力真的要好, 不然長城學校教科書遠拍的照片看起來都是平的, 八達嶺的長城的階梯大概起碼有 30-50 層樓高, 沒一點腳力真的會累死. 平地的頤和園走一圈大概也要一整天, 大概半天腳就軟了.&lt;br /&gt;&lt;br /&gt;頤和園果然不虛此名, 園內建築集江南庭園山水之長. 雖然歷史上將甲午戰爭戰敗歸咎於慈禧挪用軍費修園. 不知現在到頤和園熙來人往的人群, 看到頤和園欣賞美麗的風景同時, 會不會對歷史有另一番看法.&lt;br /&gt;&lt;br /&gt;798 是另一個值得去的景點, 這裡原先是北京將廢置的廠房便宜出租給藝術工作人員, 供創作及展覽的地方. 目前算是經營很成功的藝術展出場地, 也有不錯的餐廳跟定期展覽 (UCCA). 整個園區也需要 6-8 小時才能逛完, 雖然展出風格有些一致, 但還是非常的不錯, 值得一遊.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-9001351290598814458?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/9001351290598814458/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=9001351290598814458' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/9001351290598814458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/9001351290598814458'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/04/2009-04.html' title='北京記遊 2009 04'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_y3T3s33suM8/SeVrcAd1F-E/AAAAAAAAA7M/CfgDgJ4lTQc/s72-c/20094Beijing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2464499097284785139</id><published>2009-04-02T04:33:00.001-07:00</published><updated>2009-04-02T08:57:27.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>找一台適合跑 Linux 的電腦</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5312633739120582802" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SbpEPPoJoJI/AAAAAAAAAS0/m0IJ2Ur1Ne8/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;一定很多人很奇怪, Linux 不是幾乎每一台電腦都能跑嗎 (還有人覺得爛電腦跑 linux 剛剛好 ;-) ) 這有什麼好寫的?. 如果知道當初為了找 Harald 選定 OM developer 要用的電腦, 親自跑了 4 - 5 次光華商場還找不到適合的主機板, 就可以理解我為什麼會把這件事挑出來寫一寫.&lt;br /&gt;&lt;br /&gt;其實當初 (2007 年) 指定的規格並不複雜 ;)&lt;br /&gt;&lt;br /&gt;* 網路晶片組必須要 Intel 或 Marvell&lt;br /&gt;* Intel 整合式繪圖晶片組 (945G), 板子上必須提供 RGB 輸出&lt;br /&gt;* CPU 要有 4Mbytes 以上的 layer 2 cache&lt;br /&gt;* 要有 DVI add2 卡&lt;br /&gt;&lt;br /&gt;由於大部分的電腦使用者都會買分離式的 3D 顯卡, 其實本來整合式顯卡的板子在台灣消費市場就不多. 因為缺了 3D 顯卡, 這類板子可能都是假設使用者是辦公室或居家消遣用, 搭配的網路晶片組大都使用 realtek 或 attansic 的晶片.&lt;br /&gt;&lt;br /&gt;當初會想找 Intel 和 Marvell 網路晶片板子的理由是: 相對來說產品比較 community friendly (晶片文件, 說明, 原廠的 linux 驅動程式原始碼及支援), 同時還支援一些遠端開機/安裝等功能 (Linux driver supported). 最重要的, 據說穩定性有差, 但是我沒實際測過, 只好姑且當參考.&lt;br /&gt;&lt;br /&gt;使用整合式顯示晶片的原因: 是因為 Intel 有一個 community type project 提供整合式晶片組, 支援 Linux 的 2D/3D 顯示驅動程式 &lt;a href="http://intellinuxgraphics.org/documentation.html"&gt;http://intellinuxgraphics.org/documentation.html&lt;/a&gt; . 所以基本上你不需要另外掛 ATI 或是 Nvidia 的 binary 非 GPL 驅動程式, 還需要作一些雜七雜八的設定, 就可以 "有" 3D 加速的功能.&lt;br /&gt;&lt;br /&gt;而 DVI ADD2 卡, 就是可以讓整合晶片組, 由原本的主機板內建的 RGB 輸出, 透過一張簡單 PCI 卡直接提供雙 DVI 輸出. 這張卡不貴, 可是可能大部分用整合式晶片組的人, 都不知道 Intel 主機板加一張 PCI 轉卡就可以有雙 DVI 輸出, 不需要另外買 3D 加速卡 (Windows 系統插上去也會主動認得, 不需要另外裝驅動程式, 神奇吧!!!). 不過 DVI ADD2 當初真是天殺的難找, 台灣大家都裝 3D 顯卡, 哪來的那種東西阿. 後來好不容透過採購管道, 找到 DVI ADD2 卡. 後來居然還有另一段插曲, 某個相關研發部門, 因為需要 DVI ADD2 卡做試驗, 而台灣的庫存卡被我們買光了, 還跑來找我們借卡試 driver.&lt;br /&gt;&lt;br /&gt;CPU 要有 4MB 的 layer 2 cache 則是為了編譯程式的需求, 跟一般 2M 的比起來, 4M 大概可以快 20-30 %, 在當時 C2D 只有 E6420 的 CPU 有 4M layer 2 cache. 而且, 後來 C2Q 的 Q6600 有一段時間可能是因為庫存或是推廣, 賣的比 E6420 還便宜 (非常奇怪), 而且還有 8M layer 2 cache. 所以後來 E6420 買不到, 就直接升 C2Q Q6600. 結果是編 FR 的 kernel under 100 秒.&lt;br /&gt;&lt;br /&gt;後來好不容易挑到一張 ASUS 的 P5GZ-MX 符合規格, 但是要買時, 945G 的板子又已經停產 . 台灣又沒有符合需求的 (此時發現國內廠商放在國外賣的板子種類, 跟料好像都比台灣本地要好...火...), 轉成 Gigabyte 一張 965G-DS3, 試完可以, 又因為採購的人找不到廠商願意客製化大量加保固. 後來還是輾轉買到 ASUS 某個 965G solution.&lt;br /&gt;&lt;br /&gt;結論是, 每一個選擇, 都有背後的原因 ;) 後來果然大家也沒花什麼時間 tune driver 這 tune driver 那, 省了一些時間, 但是很多當初想要做的 fancy 功能也還是沒用到 (如網路安裝所有機器, 遠端控制...等). So, 還沒 implement 就開始 optimization 不是只會發生在 coding 上 ;)&lt;br /&gt;&lt;br /&gt;下次各位有興趣, 可以試試找一張內建整合顯卡的主機板, 然後還是用 Marvell 跟 Intel 網路晶片的 solution 是不是很難 ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2464499097284785139?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2464499097284785139/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2464499097284785139' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2464499097284785139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2464499097284785139'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/04/linux.html' title='找一台適合跑 Linux 的電腦'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/SbpEPPoJoJI/AAAAAAAAAS0/m0IJ2Ur1Ne8/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8457216967254878611</id><published>2009-04-01T04:10:00.001-07:00</published><updated>2009-05-11T17:50:32.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>開放軟體社群專案 - 開發模式簡介, 工具名詞解釋</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5312633739120582802" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SbpEPPoJoJI/AAAAAAAAAS0/m0IJ2Ur1Ne8/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;拜微軟良好的 MSDN 及產業的 ecosystem 建立完整之賜, 加上超級強力的 IDE Virtual Studio. 一般習慣 "微軟" 開發人員進入到 Open source 環境的時候, 由於工具跟說明都是散在各個地方, 最大的問題是被一堆新名詞/新指令搞的頭昏腦脹, 或是不太清楚工具的功能或使用方式. 下面是一些常用開發名詞, 開發流程, 跟工具功能&lt;br /&gt;&lt;br /&gt;簡單的解釋.&lt;br /&gt;&lt;br /&gt;名詞-&lt;br /&gt;* Autotools: 如果想讓你的程式能夠在各個不同平台下編譯, autotools is the ABC have to follow.&lt;br /&gt;* Toolchain: 編譯跨平台程式需要編譯器組合 (for example: x86 base to ARM base)&lt;br /&gt;* OE: OpenEmbedded 的縮寫, 透過 OE 提供的套件庫, 你可以編譯不同硬體架構平台相關的整個 rootfs 所需要的檔案.&lt;br /&gt;* Bitbake: OE 使用編譯套件庫的 make. 一般編譯器透過 config 編譯出所需程式, bitbake 透過 receipt 編譯特定平台上的所需的: 單一套件, 多個套件, 或整個 rootfs image, 同時可協助處理相依性的問題.&lt;br /&gt;* Monotone/git: OE 使用的版本管理平台, 以前是 monotone, 現在開始改為 git (git 最早也是根據 monotone 改寫), 透過各種 manifest (檔案的清單, 套件的清單, 清單的清單) 做為所有套件版本追蹤的根據.&lt;br /&gt;&lt;br /&gt;我把 monotone/autotools/OE 相關的 usermanual 放在 &lt;a href="http://t0ny.net/openmoko/doc/"&gt;http://t0ny.net/openmoko/doc/&lt;/a&gt; , 最新的, 可以到 &lt;a href="http://www.openembedded.org/"&gt;http://www.openembedded.org/&lt;/a&gt; , &lt;a href="http://monotone.ca/"&gt;http://monotone.ca/&lt;/a&gt; &lt;a href="http://bitbake.berlios.de/manual/"&gt;http://bitbake.berlios.de/manual/&lt;/a&gt; 下載. git 相關的可以很容易從網路搜尋到.&lt;br /&gt;&lt;br /&gt;開發流程-&lt;br /&gt;&lt;br /&gt;其實軟體的開發流程並不應該是有區分開放軟體, 或是一般軟體的差別. 現實生活中, 開發方式也跟組織方式和人力調配方式有關. 但是大型 "開放" 軟體專案, 因為可能 90% 以上的軟體元件或函式庫並不是由自己開發, 如果不想要自己管理每一個組件的版本及設計細節, 只有藉助像是 OpenEmbedded 的平台來提供相關的組件原料.&lt;br /&gt;&lt;br /&gt;一般的商用 embedded system 套件, 大部分都是已經 freeze 裡面所有套件的版本. 有問題或功能增加時, RD 只需要更新裡面的少數套件. Windows Embedded 是這種方式的典型代表. 其他像是 MontaVista 也是類似的方式.&lt;br /&gt;&lt;br /&gt;但是 Linux 及較不純的 Android, 因為加入了社群開發, 所以套件的修正其實是很頻繁的. 套件間又有相依性的問題, 所以要能夠自己 download source/patch, 及 daily build 的能力其實很重要. 要能Daily build 所有變更中的專案 source, 其實很麻煩 (簡直是惡夢), 所以需要 OE 這類平台及 bitbake 這類工具幫助. 當然, release 產品並不一定需要所有的 package 都是最新的, 除非是因為有某個開發模組的相依專案, 也一直在更新. 相對於傳統開發, 就等於是有多個不同小組同時開發一個大型專案. 但這種開發方式, 對於本身就是分散式開發的 Linux 是非常常見的狀況.&lt;br /&gt;&lt;br /&gt;所以, 透過 OE (組織) 的 monotone/git (版本管理工具) 及 bitbake (編譯選擇工具) 及 bitbake 的 receipt (編譯條件實際內容清單) 來做版本管理. 通常 Open source 專案的 binary download 網站會有幾個目錄 包含專案不同階段的 binary 及 package:&lt;br /&gt;&lt;br /&gt;* stable: 穩定版, 或是經過測試的 release 版&lt;br /&gt;* testing: 開發版, 或是正在測試中的版本&lt;br /&gt;* unstable: 直接 daily build 出來, 或是未經測試的版本&lt;br /&gt;&lt;br /&gt;如果要 sync 不同小組的工作, 每個小組都必須熟悉相同的工具, 在 linux 社群中, 因為所有的大型開發都是分散式, 所以需要不停的 sync (daily build/daily update), 使用相同 source, 才能整合不同團隊間的工作及合作.&lt;br /&gt;&lt;br /&gt;開放軟體的開發, 通常最大的難關並不是技術或是工具的使用上. 而是讓開發人員習慣將程式碼, 每天或是每個問題有初步解決成果後, 就提交到 mailing list 中討論. 而不是悶著頭把程式寫到非常完整, 或是非常複雜才提交. 因為在開放環境下, 每一個人都可能在作同一份工作, 遇到相同的 bug. 唯一有效率的方式是當解決問題後, 盡快的提交 mailing list 或 maintainer 審核. 避免其他人也在解一樣的問題. 因為一旦 fork 太久, 任何人寫的程式都很難再與其他人程式整合.&lt;br /&gt;&lt;br /&gt;大部分我目前遇到的 opensource developer, 例如 (harald/werner/andy...) 等, 他們解完問題到提交的時間不會多於 24 小時. 並不是在短短時間內, 他們提交的 code 一定不會有問題. 而是專案進行的模式, 就是 relaese early, release often.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8457216967254878611?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8457216967254878611/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8457216967254878611' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8457216967254878611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8457216967254878611'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/04/blog-post.html' title='開放軟體社群專案 - 開發模式簡介, 工具名詞解釋'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/SbpEPPoJoJI/AAAAAAAAAS0/m0IJ2Ur1Ne8/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-1677384256066788379</id><published>2009-03-26T08:30:00.000-07:00</published><updated>2009-10-12T08:38:03.355-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>who I am</title><content type='html'>當具備多種不同專長能力後, 很多事情到後來是對生活態度跟生活方式的選擇. 每個選擇, 會有現實的理由, 當然也有抽象的原因. 很多時候, 人的一部分自我都活在別人的猜測跟想像中, 真實的那個, 本人可能都不見得認的清吧!&lt;br /&gt;&lt;br /&gt;所有抽象具像化, 唯一的結果就是失真. 我很想解釋, 但是唯一的方式就是用失真的範例, 透過破碎的共同認知, 傳達一個注定模糊無意義的訊息.&lt;br /&gt;&lt;br /&gt;我只知道, 我愛音樂, 也愛電腦及各式科技帶來的可能性. 每個人在某個時間點, 都會遇到 Neo pick pill 的問題. And, you never know what the choice means...&lt;br /&gt;&lt;br /&gt;Life is still moving forward...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-1677384256066788379?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/1677384256066788379/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=1677384256066788379' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1677384256066788379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1677384256066788379'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/03/who-i-am.html' title='who I am'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-7444059984443349385</id><published>2009-03-25T08:35:00.001-07:00</published><updated>2009-03-25T09:10:22.988-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>專注力 - Ichiro</title><content type='html'>昨天很難得的, 有閑也有心情看棒球經典賽. 打開電視的時候, 日本還以 1 分領先, 後來一連串拉鋸的過程很精采, 但是我真正有興趣的一瞬, 是 ichiro 面對 10 局上, 面對命運之神帶著一點挑臖意味, 關鍵打席的表現.&lt;br /&gt;&lt;br /&gt;我對於 Ichiro 的印象就是 baseball monk, 就是把棒球運動當成是一種修行, 包括練習的態度, 對球具的尊重...等. 而修行的成果, 可以從一路以來, 在比賽中的穩定表現看出來.&lt;br /&gt;&lt;br /&gt;10 局上, Ichiro 站上運命的位置後, 一直很注意他的眼神跟動作, 我很好奇, 在這麼關鍵時間, 關鍵位置, 關鍵表現. 到底是: 苦修的專注力勝利? 還是球是圓的, 一切都是運氣?&lt;br /&gt;&lt;br /&gt;就在 Ichiro 跟投手展開一連串的纏鬥, 連挖地瓜的球都擊成界外後, 我突然覺得, Ichiro 的穩定表現不是僅是個人專注力, 專注力更進一步的影響了整個氣氛. 運氣變成專注力有機會表現的舞台.&lt;br /&gt;&lt;br /&gt;最後, 很 Ichiro 的安打, 結束了兩隊的糾纏. 運氣也許讓他站上了決定勝敗的關鍵位置. 但我想, 在那一瞬間, 我只能從 Ichiro 眼中看到專注力, 沒有運氣.&lt;br /&gt;&lt;br /&gt;It's a great game - thanks to all players in this game!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-7444059984443349385?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/7444059984443349385/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=7444059984443349385' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7444059984443349385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/7444059984443349385'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/03/ichiro.html' title='專注力 - Ichiro'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6471046223312557010</id><published>2009-03-13T03:24:00.001-07:00</published><updated>2009-03-13T04:46:06.849-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>FreeRunner 一堆使用上的小 trick</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5312633739120582802" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SbpEPPoJoJI/AAAAAAAAAS0/m0IJ2Ur1Ne8/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;一些使用上的小 trick, 陸續增加中.&lt;br /&gt;&lt;br /&gt;* 抓圖&lt;br /&gt;&lt;br /&gt;在 FreeRunner 上抓圖可以很簡單, 或是很複雜 ;) 最簡單也最原始的方式就是直接:&lt;br /&gt;&lt;br /&gt;#./cat /dev/fb0 &amp;gt; file.raw&lt;br /&gt;&lt;br /&gt;當然, 你也可以把 raw 的圖, cat 回螢幕上.&lt;br /&gt;&lt;br /&gt;#./cat file.raw &gt; /dev/fb0&lt;br /&gt;&lt;br /&gt;作假的程式或預覽效果還蠻方便的 :-) Android 的 fb0 的路徑不太一樣, 在 screen/display 下.&lt;br /&gt;&lt;br /&gt;接著透過 fb2png 將 raw 的圖檔變成標準 png 檔&lt;br /&gt;&lt;br /&gt;#./fb2png file.raw file_not_raw.png 9 480 640 16&lt;br /&gt;&lt;br /&gt;fb2png Binary 可以從以下網址取得:&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/samples/bin/fb2png/"&gt;http://t0ny.net/openmoko/samples/bin/fb2png/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* 使用 VM 上的 Linux 連結 FR&lt;br /&gt;&lt;br /&gt;拜台灣 Windows 盛行之賜, 很多 Developer 都是透過 VM (virtual box/vmware/virtual pc/others) 使用 Linux 系統. 但是透過這種方式連接 FR 時, 需要注意連接 FR 時, "記得" 視窗的 focus 要在 VM 上. 這樣 VM 才抓的到新加入的 device (FR).&lt;br /&gt;&lt;br /&gt;透過 VM 做 ssh 跟 dfu 其實都是 ok 的, 但是 dfu 在 VM 下有時速度會很慢, 或是 dfu 到一半中斷. 同時, 請記得 ssh 連線時要把 suspend (休眠) 關掉, 不然 ssh 連線會一直斷.&lt;br /&gt;&lt;br /&gt;* Windows 直接連 FR&lt;br /&gt;Windows 是可以直接 ssh 進 FR 的, 不過你要安裝 Windows RNDIS 驅動程式:&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/driver/neo_rndis/"&gt;http://t0ny.net/openmoko/driver/neo_rndis/&lt;/a&gt; 然後透過 putty 或是 tunnelier (&lt;a href="http://www.bitvise.com/tunnelier"&gt;http://www.bitvise.com/tunnelier&lt;/a&gt;), 做 ssh 或 scp.&lt;br /&gt;&lt;br /&gt;基本上, 你可以把 FR 是一台小的 linux 電腦, 可以透過 USB/Wi-Fi/BT 甚至 GPRS 做 ssh/scp 的工作.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6471046223312557010?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6471046223312557010/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6471046223312557010' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6471046223312557010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6471046223312557010'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/03/freerunner-trick.html' title='FreeRunner 一堆使用上的小 trick'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/SbpEPPoJoJI/AAAAAAAAAS0/m0IJ2Ur1Ne8/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6246929627904457542</id><published>2009-03-11T02:08:00.001-07:00</published><updated>2011-03-05T00:08:36.958-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>使用 Freerunner 的三軸動作感應器 (3 axis accelerometer) - motion sensor</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5311859411270451810" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SbeD_bmXQmI/AAAAAAAAASU/ZDlq-WbIn_w/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;自從任天堂的 Wii 跟蘋果的 iPhone 出現以後, 動作感應器 (or 微機電 MEMS 系統) 感覺一下子變成顯學. 這幾年也看到越來越多的應用出現在 iPhone 或其他的 Device 上, 最常見的還是拿來當樂器或是其他控制器使用. 例如:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/Mfhji2oQdLQ&amp;amp;hl=" width="425" height="344" type="application/x-shockwave-flash" fs="1" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;不過這個 air guitar 跟 Accelerometer 可能沒什麼直接關係 ;) 只是提神用!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Freerunner 有 2 個 ST LIS320DL 的三軸動作感應器, 一個位在機器的左上方靠近 Aux 鍵的位置, 一個在主板的右下方靠近麥克風的位置. 一般的手機只需用到 1 顆, 就可以偵測目前手機的機身狀態 (朝哪個方向傾斜/加速度). ST LIS320DL 規格是偵測區間可調 +- 2g 或 +-8g, 丟資料的頻率可設成 100 Hz 或 400 Hz. 它還有可以設定的 interrupt 腳位. 可以在特定狀況下(自由落體, 靜止突然移動), 才發出 interrupt. 這兩個 motion sensor 一個有接到可把 CPU 從 suspend 喚醒的腳位上. 詳細的 datasheet 可參考下面的網址: &lt;a href="http://www.st.com/stonline/products/literature/ds/12726/lis302dl.htm"&gt;http://www.st.com/stonline/products/literature/ds/12726/lis302dl.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這兩個三軸動作感應器可以同時使用. 但是在大部分狀況下, 1 顆就已經足夠. 2 顆 motion sensor 組合起來是可以做比較複雜跟精準動作偵測 (偵測角加速度, 而不是只是單純 3 軸), 或是進一步作 gyro sensor, 生物動作特徵辨認等 or something you could dream of ;-)&lt;br /&gt;&lt;br /&gt;簡單來說, 有一點像是原先的 Wii Remote + MotionPlus&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/fTCbgHS13X8&amp;amp;hl=" width="425" height="344" type="application/x-shockwave-flash" fs="1" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 設定 Accelerometer&lt;br /&gt;&lt;br /&gt;設定 Accelerometer 可以透過 /sys 下面完成, 不過因為 kernel 版本關係, 2.6.28 版之後, 相關的 sysfs 設定會出現在&lt;br /&gt;&lt;br /&gt;/sys/class/i2c-adapter/i2c-0/0-0073/lis302dl.{12}&lt;br /&gt;&lt;br /&gt;root@om-gta02:/sys/devices/platform/lis302dl.1# ls&lt;br /&gt;driver duration modalias sample_rate threshold wakeup&lt;br /&gt;dump full_scale power subsystem uevent&lt;br /&gt;&lt;br /&gt;可以設定包括 threshold (觸發臨界值), sample (取樣頻率) 以及其他的 Accelerometer 參數. 可以直接透過 cat threshold 或是 echo 72 &amp;gt; threshold 的方式改變設定數值. 同時, 設定數值有時並不是以 1 為基數, 以 threshold 來說, 就是 18 的倍數.&lt;br /&gt;&lt;br /&gt;* 讀取 Accelerometer 數值&lt;br /&gt;&lt;br /&gt;Openmoko wiki 一樣有詳細如何讀取 motion sensor 資料的方法, 請參考:&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval"&gt;http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;最簡單的存取方式 motion sensor 方式, 就是直接 cat Accelerometer 的 event 輸出.&lt;br /&gt;&lt;br /&gt;root@om-gta02:/# cat /dev/input/event2&lt;br /&gt;&lt;a href="mailto:root@om-gta02:/"&gt;root@om-gta02:/&lt;/a&gt;# cat /dev/input/event3&lt;br /&gt;&lt;br /&gt;event2 及 event3 分別是第 1 顆及第 2 顆 Accelerometer 的資料輸出.&lt;br /&gt;&lt;br /&gt;Accelerometer 輸出的資料格式如下:&lt;br /&gt;&lt;br /&gt;root@om-gta02:/# cat /dev/input/event3 hexdump&lt;br /&gt;0000000 3fec 3896 ebe5 0000 0002 0000 ffb8 ffff&lt;br /&gt;0000010 3fec 3896 ebf2 0000 0002 0001 0036 0000&lt;br /&gt;0000020 3fec 3896 ebf7 0000 0002 0002 0414 0000&lt;br /&gt;0000030 3fec 3896 ebfd 0000 0000 0000 0000 0000&lt;br /&gt;0000040 3fec 3896 ee80 0000 0002 0000 ffb8 ffff&lt;br /&gt;0000050 3fec 3896 eea9 0000 0002 0001 0036 0000&lt;br /&gt;0000060 3fec 3896 eeaf 0000 0002 0002 0132 0000&lt;br /&gt;0000070 3fec 3896 eeb5 0000 0000 0000 0000 0000&lt;br /&gt;&lt;br /&gt;以第一筆資料來說:&lt;br /&gt;&lt;br /&gt;3fec 3896 ebe5 0000 是時間&lt;br /&gt;0000 0002 是事件的種類&lt;br /&gt;接下來的 0000 是 X 軸, 而 0001, 0002 分別是 Y 軸及 Z 軸&lt;br /&gt;ffb8 ffff 是 Accelerometer 的數值.&lt;br /&gt;&lt;br /&gt;你可以參考 &lt;a href="http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval"&gt;http://wiki.openmoko.org/wiki/Accelerometer_data_retrieval&lt;/a&gt; 的內容, 用 perl/python, 或是 C 來讀取 accelerometer 數值. Community 的 rui 也 donate 了一個程式 rotate, 可以偵測手機機身的狀態. Source code 可以從這取得:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/samples/src/rotate/"&gt;http://t0ny.net/openmoko/samples/src/rotate/&lt;/a&gt; 執行結果如下.&lt;br /&gt;&lt;br /&gt;root@om-gta02:~# ./test&lt;br /&gt;Types: a(2), b(2), c(2)&lt;br /&gt;Codes: a(0), b(1), c(2)&lt;br /&gt;Value: a(-792), b(-252), c(522)&lt;br /&gt;left&lt;br /&gt;Types: a(2), b(2), c(2)&lt;br /&gt;Codes: a(0), b(1), c(2)&lt;br /&gt;Value: a(-810), b(-252), c(558)&lt;br /&gt;left&lt;br /&gt;Types: a(2), b(2), c(2)&lt;br /&gt;Codes: a(0), b(1), c(2)&lt;br /&gt;Value: a(-810), b(-270), c(540)&lt;br /&gt;left&lt;br /&gt;Types: a(2), b(2), c(2)&lt;br /&gt;Codes: a(0), b(1), c(2)&lt;br /&gt;Value: a(-774), b(-270), c(504)&lt;br /&gt;left&lt;br /&gt;Types: a(2), b(2), c(2)&lt;br /&gt;Codes: a(0), b(1), c(2)&lt;br /&gt;Value: a(-792), b(-270), c(522)&lt;br /&gt;left&lt;br /&gt;&lt;br /&gt;* 利用 Accelerometer 作動作捕捉&lt;br /&gt;&lt;br /&gt;基本上像 Wii Sport 之類的遊戲, 都是透過比較複雜的動作捕捉方式來完成, 並不是單純的讀某一個時間的 Accelerometer 數值達成. 動作捕捉並不需要 2 顆 Accelerometer (模擬 gryo sensor 才需要), 但是需要比較/紀錄不同 Accelerometer 資料以及作加速度計算等. 在 GSoC (Google Summer of Code) 上, 有一個透過 FreeRunner 來做動作捕捉的範例.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/K2S2rQUETwc&amp;amp;hl=" width="425" height="344" type="application/x-shockwave-flash" fs="1" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Source code 及可安裝的 ipk 在此, 還意外的看到了 bb 檔 ;)&lt;br /&gt;&lt;a href="http://code.google.com/p/accelges/source/browse/#svn/trunk"&gt;http://code.google.com/p/accelges/source/browse/#svn/trunk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;論文位址如下:&lt;br /&gt;&lt;a href="http://dev.borza.ro/demo/Motion-based%20Gesture%20Recognition%20with%20an%20Accelerometer/Paper.pdf"&gt;http://dev.borza.ro/demo/Motion-based%20Gesture%20Recognition%20with%20an%20Accelerometer/Paper.pdf&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;另一個有關把 motion sensor 專案當成遙控器的專案是 ReMoko, 程式分為 target 端及 server 端:&lt;/div&gt;&lt;div&gt;&lt;a href="http://wiki.openmoko.org/wiki/ReMoko"&gt;http://wiki.openmoko.org/wiki/ReMoko&lt;/a&gt;&lt;a href="http://wiki.openmoko.org/wiki/Summer_of_Code_2008"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Source 在:&lt;/div&gt;&lt;div&gt;&lt;a href="http://code.google.com/p/remoko/"&gt;http://code.google.com/p/remoko/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Google Developer 也有官方的 sample&lt;br /&gt;&lt;br /&gt;&lt;a href="http://developer.android.com/resources/samples/AccelerometerPlay/index.html"&gt;http://developer.android.com/resources/samples/AccelerometerPlay/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;呵, 突然發覺還是有 tube 有真相.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6246929627904457542?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6246929627904457542/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6246929627904457542' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6246929627904457542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6246929627904457542'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/03/freerunner-3-axis-accelerometer-motion.html' title='使用 Freerunner 的三軸動作感應器 (3 axis accelerometer) - motion sensor'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/SbeD_bmXQmI/AAAAAAAAASU/ZDlq-WbIn_w/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2290095818102361141</id><published>2009-03-10T00:01:00.001-07:00</published><updated>2009-10-21T17:51:33.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>FreeRunner 的 Koolu Android 及 Android cupcake source 位置及 image  安裝</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 88px; float: left; height: 31px;" id="BLOGGER_PHOTO_ID_5311451735974121858" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/SbYRNmxekYI/AAAAAAAAASM/bHIVt3M0Fsg/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Cupcake 是 Android 在 release 1.0 之後, 開發人員根據 Android 的 roadmap 及問題, 提供的 update 版本 (接下來的 codename 根據 wiki 好像是甜甜圈). 這個版本基本上是以一個 development branch 的方式進行, 所提供的 update 及 bugfix 最終會 merge 到下一個 Android 的 release 版本.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;cupcake branch 的詳細內容 &lt;a href="http://source.android.com/roadmap/cupcake"&gt;http://source.android.com/roadmap/cupcake&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;目前 android on Freerunner 已經 host 在 google code 上 (&lt;a href="http://code.google.com/p/android-on-freerunner/"&gt;http://code.google.com/p/android-on-freerunner/&lt;/a&gt;), 完整 freerunner android cupcake source 放在 &lt;a href="http://gitorious.org/android-on-freerunner"&gt;http://gitorious.org/android-on-freerunner&lt;/a&gt; 的 git 上. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Koolu 是 Openmoko 在北美地區的經銷商, 專注在 Android 在 FreeRunner 上的應用. 從某個角度來說, Koolu 是 FreeRunner 的 Android distro maintainer. 所以 Koolu 的 Android image 會每個月更新. Koolu Android maintainer 是 brian code 及 maddog, 相關的討論可以到 koolu 的 forum 找到:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forum.koolu.org/"&gt;http://forum.koolu.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Koolu Android Beta 4 開始, 提供了更簡單的 FreeRuuner 安裝方式. 同時, Beta4 及 cupcake beta1 最大的改變是取消了原來 FR Android 需要 SD 卡的限制. 同時, 安裝程序簡單許多. 安裝步驟如下: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;* 到 &lt;a href="http://koolu.com/%7Emarcelo/"&gt;http://koolu.com/~marcelo/&lt;/a&gt; , &lt;a href="http://code.google.com/p/android-on-freerunner/downloads/list"&gt;http://code.google.com/p/android-on-freerunner/downloads/list&lt;/a&gt; 或 &lt;a href="http://t0ny.net/openmoko/images/android/"&gt;http://t0ny.net/openmoko/images/android/&lt;/a&gt; 下載 Beta4 或 cupcake 的壓縮檔.&lt;br /&gt;* 將檔案解壓縮後, 直接 copy 到 fat 格式的 SD 卡 (不需要分割)&lt;br /&gt;* 將 Copy 完的 SD 卡放入 FR, 按下 Aux 鍵後按 Power 鍵開機, 用 Aux 鍵選 Boot From SD card&lt;br /&gt;* 安裝程式會自動完成安裝動作, 重新開機後即可進入 Android. 同時 ... SD 卡可移除!!!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;另外, debug 的連現在 beta4/rc1 有一些改變, 以前 USB connection 都是 hook 在 usb0, Koolu beta4/rc1 開始 hook 在 eth3 (or ethx) 上. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;原先的 debug 連線命令:&lt;/div&gt;&lt;div&gt;#ifconfig usb0 192.168.0.200 netmask 255.255.255.0&lt;/div&gt;&lt;div&gt;#ADBHOST 192.168.0.202 ./adb shell&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;新的 debug 連線命令:&lt;/div&gt;&lt;div&gt;#ifconfig eth3 192.168.0.200 netmask 255.255.255.0&lt;/div&gt;&lt;div&gt;#ADBHOST 192.168.0.202 ./adb shell&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;ADB tools 是 SeanMcNeil 提供的 tool, 可以從 &lt;a href="http://t0ny.net/openmoko/util/target/"&gt;http://t0ny.net/openmoko/util/target/&lt;/a&gt; 下載 adb binary &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2290095818102361141?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2290095818102361141/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2290095818102361141' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2290095818102361141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2290095818102361141'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2009/03/freerunner-koolu-android-beta4-rc1.html' title='FreeRunner 的 Koolu Android 及 Android cupcake source 位置及 image  安裝'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_y3T3s33suM8/SbYRNmxekYI/AAAAAAAAASM/bHIVt3M0Fsg/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-9200266197620561272</id><published>2008-12-26T03:49:00.001-08:00</published><updated>2009-09-23T19:54:55.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (10) 認識 Openmoko 社群, 環境, 工具以及開發人員</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5284068292024814354" border="0" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/SVTIHYsLSxI/AAAAAAAAARE/oAP9y0Qe6cA/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Openmoko 是一個非常特別的專案, 也是目前唯一軟體及硬體都完全根據 Open source 社群精神公開的專案. 2006 年底, 第一個產品 Neo1973 (GTA01) 在市場上販售前, 所有相關的程式碼及開發資訊就已在網路上公開. 在2008 年 6 月 FreeRunner (GTA02) 發售後, 相關的電路圖 (schematics: &lt;a href="http://downloads.openmoko.org/developer/schematics/"&gt;http://downloads.openmoko.org/developer/schematics/&lt;/a&gt; ) 以及外型設計 CAD 檔 (Housing: &lt;a href="http://downloads.openmoko.org/developer/CAD/"&gt;http://downloads.openmoko.org/developer/CAD/&lt;/a&gt;) 也都開放給開發人員下載. 同時也提供了大部分的硬體 datasheet 供開發人員有機會 base on 在原設計下進行自己的設計.&lt;br /&gt;&lt;br /&gt;[開放原始碼社群常使用的工具]&lt;br /&gt;這幾年來, 許多硬體產品除了原先的出貨的功能外, 會有開放原始碼社群加入開發或以 hack 的方式增加原先產品的功能. 比較有名的例如最早建立在 Linksys 的 WRT54G 的 OpenWRT ( &lt;a href="http://openwrt.org/"&gt;http://openwrt.org/&lt;/a&gt; ) 專案, 提供了無線 AP 的相關 firmware. 或是最近的 Google Android 也提供了幾乎完整的原始碼在 &lt;a href="http://android.git.kernel.org/"&gt;http://android.git.kernel.org/&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;而其它的像是 Gumstix ( &lt;a href="http://gumstix.com/"&gt;http://gumstix.com/&lt;/a&gt; ) 也有 Windows CE &lt;a href="http://www.codeplex.com/gumstix"&gt;(http://www.codeplex.com/gumstix&lt;/a&gt;) 及 OpenEmbedded (&lt;a href="http://www.gumstix.net/"&gt;http://www.gumstix.net/&lt;/a&gt;) 不同的討論社群. 基本上, 開放原始碼社群進行開發 (極端的分散式開發 ;) ) 使用的工具有下列幾項:&lt;br /&gt;&lt;br /&gt;* 郵件/即時線上討論: IRC, mailing list, jabber&lt;br /&gt;* 原始碼管理: svn 及 git&lt;br /&gt;* 知識管理: wiki&lt;br /&gt;* Developer 個人的分享: planet/blog&lt;br /&gt;* Bug 追蹤/Issue tracker: Trac/Bugzilla&lt;br /&gt;* Project 管理: taskjuggler&lt;br /&gt;* 常用的免費服務: sourceforge, google xxx (code/calendar/docs) 等&lt;/div&gt;&lt;div&gt;* 釋出版本及套件下載&lt;br /&gt;&lt;br /&gt;[線上討論]&lt;br /&gt;Oopenmoko 的線上公開討論區是在 Freenode 的 #openmoko , Windows 的使用者可以用 mIRC 或是其他 IRC 軟體.&lt;br /&gt;&lt;br /&gt;[郵件討論]&lt;br /&gt;在開放原始碼社群 (open source community)中, 傳統的 mailing list 是最常見的討論方式, 以及 irc. 這一點和國內常用的討論區方式不同. Openmoko 的 mailing list 列表在這裡: &lt;a href="http://lists.openmoko.org/mailman/listinfo/"&gt;http://lists.openmoko.org/mailman/listinfo/&lt;/a&gt; 如果你習慣討論區的介面, 可以透過&lt;a href="http://lists.openmoko.org/nabble.html"&gt;http://lists.openmoko.org/nabble.html&lt;/a&gt; 來加入討論.&lt;br /&gt;&lt;br /&gt;最重要的有:&lt;br /&gt;&lt;br /&gt;* community: 社群主要的討論區, 包含常見問題, 發展方向, 抱怨, 希望...等&lt;br /&gt;* devel: 軟體相關討論: 主要是在應用程式 level, 包含工具, 各個 distribution, release package 討論&lt;br /&gt;* kernel: 相關 kernel porting/driver bugs, 以及介於 software 和 hardware 相關的問題&lt;br /&gt;* hardware: 硬體相關問題討論, hardware bugs&lt;br /&gt;* support: 常見的 distribution 問題, 硬體瑕疵和軟體使用問題等&lt;br /&gt;&lt;br /&gt;在這些 mailing list 進行訂閱動作後, 相關的討論 mail 就會寄到你的信箱, 通常一個單一 list 一天都會有數封到數十封不等的信件. Android 或其他的 Open Source 專案, 都以類似的方式進行資訊分享與協同開發.&lt;br /&gt;&lt;br /&gt;[原始碼伺服器]&lt;br /&gt;Openmoko 是一個開放原始碼專案, 當然提供所有相關的原始碼供使用者下載. Openmoko 使用下列原始碼伺服器:&lt;br /&gt;&lt;br /&gt;&amp;lt;git 伺服器&amp;gt;&lt;br /&gt;位址: &lt;a href="http://git.openmoko.org/"&gt;http://git.openmoko.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;可能一般開發人員對 svn 或是 virtual source safe 的原始碼管理方式比較熟悉, 但是對於 git 可能會有一些陌生. git 最主要的優點就是分散式設計, 可以快速 branch. 舉例來說, 每個人自己 clone 下來的 git 都是可以自己 branch, 同時可以在本機 commit 自己的 code. 不需要連回原 server 做 commit 的動作. 網路上的有許多的 cheat sheet (&lt;a href="http://git.or.cz/gitwiki/GitCheatSheet"&gt;http://git.or.cz/gitwiki/GitCheatSheet&lt;/a&gt;), 可以印出來, 讓你快速習慣工具使用. Openmoko 的 git 裏, 主要有:&lt;br /&gt;&lt;br /&gt;* Linux Kernel 相關的原始碼及 patch&lt;br /&gt;* u-boot 相關原始碼及 patch&lt;br /&gt;* qi 一個精簡的 boot 程式, 最早是 werner 想用 k-boot 換掉 u-boot, 後來變成帶有東方味的 qi (氣)&lt;br /&gt;* xglamo: FreeRunner 用的 X driver&lt;br /&gt;* 產測相關軟體 production-testing&lt;br /&gt;* 開發人員的自己使用的 tools 及 Distribution fork&lt;br /&gt;&lt;br /&gt;Openmoko 的 git 基本上是從 vanilla linux kernel (未修改的 linux kernel from &lt;a href="http://kernel.org/"&gt;kernel.org&lt;/a&gt;), 加上 ARM 相關的 patch, 再加上 Ben Dooks 的 S3Cxxxx 的 porting patch, 最後加上 Openmoko 自己的patches. 相關的說明可以參考這一頁:&lt;br /&gt;&lt;a href="http://git.openmoko.org/?p=kernel.git;a=summary"&gt;http://git.openmoko.org/?p=kernel.git;a=summary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;svn 伺服器&amp;gt;&lt;br /&gt;位址: &lt;a href="http://svn.openmoko.org/"&gt;http://svn.openmoko.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Neo1973 開發時, Openmoko 使用的主要版本控制系統. 不過目前 kernel 及 u-boot 都已經被移到 git 中繼續開發. Svn 留下的是一些比較小型的專案/工具, 以及開發人員所會用到的開發工具放在 svn 中.&lt;br /&gt;&lt;br /&gt;[Bug 追蹤/Issue tracker]&lt;br /&gt;Openmoko 使用 Trac (&lt;a href="http://trac.edgewall.org/"&gt;http://trac.edgewall.org/&lt;/a&gt;) 作為主要的 Bug track 及 Issue track. 通常這類 Bug/issue tracker 工具的功能都差不多, Trac 的介面整合了 wiki 跟 issue tracker 的功能, 是用 python 作維護. Openmoko 的 Trac 在 &lt;a href="http://docs.openmoko.org/trac/"&gt;http://docs.openmoko.org/trac/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[知識管理 - wiki]&lt;br /&gt;開放原始碼專案大部分都會提供某一種的 "共筆" 平台, 讓參加專案以及想發表心得的人可以有一個地方把資訊有系統的紀錄下來. 通常許多的話題都是從 mailing list 開始, 然後討論的結果會到 wiki 或是 Trac �. Openmoko.org 的首頁就是 wiki (&lt;a href="http://wiki.openmoko.org/wiki/Main_Page"&gt;http://wiki.openmoko.org/wiki/Main_Page&lt;/a&gt;), 同時, Openmoko 的 wiki 也是使用 wikipedia 使用的 media wiki.&lt;br /&gt;&lt;br /&gt;* Mailing list 討論有明確結果 -&amp;gt; Wiki&lt;br /&gt;* Mailing list 討論有 bug -&amp;gt; Trac/Bugzilla&lt;br /&gt;&lt;br /&gt;要新增/修改/刪除 wiki 頁面上的資料, 必須先在 wiki 上建立帳號, 同時 wiki 上有 一些重要頁面是保護狀態. 只有 Wiki Administrator 才能修改.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[釋出版本及套件下載]&lt;/div&gt;&lt;div&gt;Openmoko 目前釋出的版本及對應的套件 (testing/released/un-stable) 都是放在 &lt;a href="http://downloads.openmoko.org/"&gt;http://downloads.openmoko.org/&lt;/a&gt; . 各個社群的 Distributions 可以從各自的網站下載. 要使用預先打包好 opkg 應用程式, 可以參考 &lt;a href="http://www.opkg.org/"&gt;http://www.opkg.org/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;[相關應用開發]&lt;br /&gt;Openmoko 有自己的 project server (&lt;a href="http://projects.openmoko.org/"&gt;http://projects.openmoko.org/&lt;/a&gt;), 申請帳號後即可在 project server 建立新專案. 但是 Openmoko 有計畫要 phase out 這個 server. 所以目前 Openmoko 內部的公開 project, 開始 host 在 google code 上, 例如 motion senor (accelerometer) 的 omnewrotate, 新的 contacts/sms/dialer 介面專案 paroli 等.&lt;br /&gt;&lt;br /&gt;[主要開發人員]&lt;br /&gt;Openmoko 主要的開發人員都在 wiki 的 Who is Who 頁面中 ( &lt;a href="http://wiki.openmoko.org/wiki/Who_is_Who"&gt;http://wiki.openmoko.org/wiki/Who_is_Who&lt;/a&gt; ). 透過 mailing list 或是討論區介面的 mailing list nabble (&lt;a href="http://lists.openmoko.org/nabble.html"&gt;http://lists.openmoko.org/nabble.html&lt;/a&gt;) 是最直接的方式.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;雖然大部分的 developer 已經成為歷史, 但是我還是把名字列出來 (2009, March upadte)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Andy Green: kernel/Driver (&lt;a href="http://warmcat.com/_wp/"&gt;http://warmcat.com/_wp/&lt;/a&gt;)&lt;br /&gt;Werner Almesberger: Kernel/Driver/u-boot (&lt;a href="http://www.almesberger.net/cv/papers.html"&gt;http://www.almesberger.net/cv/papers.html&lt;/a&gt;)&lt;br /&gt;Matt_Hsu: Kernel/Driver (&lt;a href="http://matthsu-abacus.blogspot.com/"&gt;http://matthsu-abacus.blogspot.com/&lt;/a&gt;)&lt;br /&gt;Michael 'Mickey' Lauer: FSO/GTK (&lt;a href="http://www.vanille-media.de/site/index.php/about/"&gt;http://www.vanille-media.de/site/index.php/about/&lt;/a&gt;)&lt;br /&gt;Brenda: Wiki&lt;br /&gt;Roh: IT infrastructure&lt;br /&gt;Gismo: IT infrastructure/SysOP&lt;br /&gt;Marek Linder: Project coordinator&lt;br /&gt;John_lee: OE/Distribution maintenance (&lt;a href="http://asleepfromday.wordpress.com/"&gt;http://asleepfromday.wordpress.com/&lt;/a&gt;)&lt;br /&gt;Holger 'zecke' Freyther: System/QT (&lt;a href="http://zecke.blogspot.com/"&gt;http://zecke.blogspot.com/&lt;/a&gt;)&lt;br /&gt;Wendy: Testing&lt;br /&gt;Regina: Testing&lt;br /&gt;Tick: opkg/installer/etk/OE (&lt;a href="http://linuxocarina.blogspot.com/"&gt;http://linuxocarina.blogspot.com/&lt;/a&gt;)&lt;br /&gt;Will: Design&lt;br /&gt;Guillaume 'Charlie' Chereau: FSO/Python (&lt;a href="http://charlie137-2.blogspot.com/2009/01/paroli-get-website.html"&gt;http://charlie137-2.blogspot.com/2009/01/paroli-get-website.html&lt;/a&gt;)&lt;br /&gt;Julian: Distribution (&lt;a href="http://walkingice.twbbs.org/blog/"&gt;http://walkingice.twbbs.org/blog/&lt;/a&gt;)&lt;br /&gt;Olv: X/LBS application (&lt;a href="http://olvaffe.blogspot.com/"&gt;http://olvaffe.blogspot.com/&lt;/a&gt;)&lt;br /&gt;Erin: GTK/Python (&lt;a href="http://i-miss-erin.blogspot.com/"&gt;http://i-miss-erin.blogspot.com/&lt;/a&gt;)&lt;br /&gt;Jeremy: LBS&lt;br /&gt;Willie: Early kernel/production work (&lt;a href="http://openmoko.wordpress.com/"&gt;http://openmoko.wordpress.com/&lt;/a&gt;)&lt;br /&gt;Sean Chiang: gsmd/gps application&lt;br /&gt;Miles: production test&lt;br /&gt;Jelan Hsu: certification/production test&lt;br /&gt;Raster: enlightment/etk/everything (&lt;a href="http://www.rasterman.com/"&gt;http://www.rasterman.com/&lt;/a&gt;)&lt;br /&gt;Harald Welte: kernel/everything (&lt;a href="http://laforge.gnumonks.org/weblog/"&gt;http://laforge.gnumonks.org/weblog/&lt;/a&gt;)&lt;br /&gt;Jserv: kernel/application&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And Me ;) GTA01/02 pm, the one should be damned :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-9200266197620561272?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/9200266197620561272/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=9200266197620561272' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/9200266197620561272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/9200266197620561272'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/12/neo-freerunner-10-openmoko.html' title='Neo FreeRunner 新手手冊 (10) 認識 Openmoko 社群, 環境, 工具以及開發人員'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y3T3s33suM8/SVTIHYsLSxI/AAAAAAAAARE/oAP9y0Qe6cA/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-63146686240181616</id><published>2008-12-22T03:25:00.000-08:00</published><updated>2009-05-28T11:03:51.481-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (9) 安裝 Android, SHR, FDOM, Debian 到 SD (SDHC) 卡</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5282574694632992482" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/SU95sk0RLuI/AAAAAAAAAQE/dAbafN_6Mt4/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;/a&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;/a&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;一般手機或移動式行動裝置只能執行預先安裝的作業系統, 應用程式的寫作也受到 framework 本身的限制, 也不能更換作業系統. Openmoko 的硬體基本上打破了這些人為加上的限制, 透過公開線路圖及取得相關技術文件授權的方式, 提供一般裝置使用者, 可以取得足夠的資訊開發新的移動裝置軟體. 這也是 Openmoko 和 Android 最大不同的地方. 相關完整的說明請參考 &lt;a href="http://wiki.openmoko.org/wiki/Boot_from_sd_card"&gt;http://wiki.openmoko.org/wiki/Boot_from_sd_card&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Openmoko 為了解決使用者需要在快速不同作業系統/版本間切換的問題, 所以在 u-boot 設計時, 設計了可從 SD 卡開機的功能, 這個功能同時可由開機的選單啟動或關閉.&lt;br /&gt;&lt;br /&gt;FR 的兩份 u-boot, 都可支援 Boot from SD 功能, NOR flash 裡面的 u-boot, 預設開機選單即可選擇從 SD 卡啟動 (先按下 Aux 鍵, 再按電源鈕). 一份是在 NAND flash, NAND u-boot 預設無開機選單.開機看不到開機選單的原因是: u-boot 預設不顯示開機選單, 但可以用先按 power 鍵開機 0.5 至 1 秒後, 按下 AUX 鍵不要放的方式, 使 NAND 的 u-boot 出現開機選單.&lt;br /&gt;&lt;br /&gt;注意: 但是 NOR 裡面的 u-boot (可能比較舊) 在 boot SDHC 的 SD 卡時, 可能會無法啟動. 此時就只能使用 NAND 的 u-boot. 同時, 某些 SDHC 有相容性的問題, 請參考: &lt;a href="http://wiki.openmoko.org/wiki/Supported_microSD_cards"&gt;http://wiki.openmoko.org/wiki/Supported_microSD_cards&lt;/a&gt; 的內容, 確認你使用的 FR 使用的是支援的 SD 或 SDHC卡, 建議直接使用 SanDisk 的 SD/SDHC 卡可以省去許多相容性的問題.&lt;br /&gt;&lt;br /&gt;開機後, u-boot 就會去尋找檔名為 uImage.bin 的檔案 (2008/04 前的 NOR 或 NAND u-boot, 會尋找檔名為 uImage 的檔案) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;[修改 NAND 開機選單 (NAND u-boot)]&lt;br /&gt;你可以透過 u-boot 修改環境變數, 加入 menu items 及對應的啟動數值. 或是直接利用 dfu-util 更新環境變數檔案 (可從這邊下載檔案 http://t0ny.net/openmoko/samples/config/env_menu.new). 直接 ./dfu-util -a 2 -R -D env_menu.new . 在 u-boot 的 command prompt, 可以利用 printenv 來看到目前的參數, 用 setenv 來設定每個參數的值.&lt;br /&gt;&lt;br /&gt;[製作可開機的 SD 卡]&lt;br /&gt;目前 Openmoko u-boot 對於可開機的 SD 卡的限制, 是必須包含兩個 partition, 第一個 partition 必須是 vfat 格式 (2008/8 月前的 u-boot 都有此限制), 用來放置檔名為 uImage.bin 的 kernel image 檔案. 第 2 個 partition 必須為 ext2/3, 用來放置整個 rootfs 的檔案.&lt;br /&gt;&lt;br /&gt;Step 1: 分割 SD (SDHC) 卡 (一般來說, SD 卡原先都會預先 format 成 fat32, 請一樣用 fdisk, 先刪除原有的 fat32 partition)&lt;br /&gt;root@ubuntu:~# fdisk /dev/mmcblk0&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The number of cylinders for this disk is set to 125632.&lt;br /&gt;There is nothing wrong with that, but this is larger than 1024,&lt;br /&gt;and could in certain setups cause problems with:&lt;br /&gt;1) software that runs at boot time (e.g., old versions of LILO)&lt;br /&gt;2) booting and partitioning software from other OSs&lt;br /&gt;(e.g., DOS FDISK, OS/2 FDISK)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Command (m for help): n&lt;br /&gt;Command action&lt;br /&gt;e extended&lt;br /&gt;p primary partition (1-4)&lt;br /&gt;p&lt;br /&gt;Partition number (1-4): 1&lt;br /&gt;First cylinder (1-125632, default 1):&lt;br /&gt;Using default value 1&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (1-125632, default 125632): +8M&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Command (m for help): n&lt;br /&gt;Command action&lt;br /&gt;e extended&lt;br /&gt;p primary partition (1-4)&lt;br /&gt;p&lt;br /&gt;Partition number (1-4): 2&lt;br /&gt;First cylinder (246-125632, default 246):&lt;br /&gt;Using default value 246&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (246-125632, default 125632):&lt;br /&gt;Using default value 125632&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Command (m for help): w&lt;br /&gt;The partition table has been altered!&lt;br /&gt;Calling ioctl() to re-read partition table.&lt;br /&gt;Syncing disks.&lt;br /&gt;&lt;br /&gt;Step 2: 格式化 SD (SDHC) 卡&lt;br /&gt;root@ubuntu:~# mkfs -t vfat /dev/mmcblk0p1&lt;br /&gt;mkfs.vfat 2.11 (12 Mar 2005)&lt;br /&gt;root@ubuntu:~# mkfs -t ext3 /dev/mmcblk0p2&lt;br /&gt;mke2fs 1.40.2 (12-Jul-2007)&lt;br /&gt;Filesystem label=&lt;br /&gt;OS type: Linux&lt;br /&gt;Block size=4096 (log=2)&lt;br /&gt;Fragment size=4096 (log=2)&lt;br /&gt;501952 inodes, 1003096 blocks&lt;br /&gt;50154 blocks (5.00%) reserved for the super user&lt;br /&gt;First data block=0&lt;br /&gt;Maximum filesystem blocks=1027604480&lt;br /&gt;31 block groups&lt;br /&gt;32768 blocks per group, 32768 fragments per group&lt;br /&gt;16192 inodes per group&lt;br /&gt;Superblock backups stored on blocks:&lt;br /&gt;32768, 98304, 163840, 229376, 294912, 819200, 884736&lt;br /&gt;Writing inode tables: done&lt;br /&gt;Creating journal (16384 blocks): done&lt;br /&gt;Writing superblocks and filesystem accounting information: done&lt;br /&gt;This filesystem will be automatically checked every 22 mounts or&lt;br /&gt;180 days, whichever comes first. Use tune2fs -c or -i to override.&lt;br /&gt;&lt;br /&gt;格式結束後, 這一張 SD (SDHC) 卡就可以準備放入 uImage.bin (第 1 個 partition vfat)及 rootfs (第 2 個 partition ext2/ext3) 的檔案及目錄.&lt;br /&gt;&lt;br /&gt;[下載需要 kernel 及 rootfs]&lt;br /&gt;每一個 Distribution 幾乎都是一組對應的 rootfs 及 kernel 方式存在. 原因大部分都是因為每一個 Distribution 裡面的程式已經都是在某個時間點將所使用的 package 做 snapshot 或是 fork 出來, 同時某些驅動程式版本及設定檔位置, 也會隨著 Distribution 不一樣. 所以幾乎每一個不同的 Distribution 都提供了成組的 kernel 及 rootfs. 目前 (2008 Dec)唯一不同的是 FDOM, 因為 FDOM 預設的 kernel 對象是 2008.X, 所以 FDOM 使用的 kernel 可以從 downloads.openmoko.org 取得.&lt;br /&gt;&lt;br /&gt;同時, 開機 SD 卡裏的 rootfs 是直接以目錄及檔案的方式存在, 所以需要 download rootfs.tar.gz 的整包壓縮檔, 而不是使用 flash 到 NAND flash 的 .jffs2 檔.&lt;br /&gt;&lt;br /&gt;請到下面網址, 取得 image 檔案, 有一些網站還提供了 gta01 的版本, download 時請注意.&lt;br /&gt;&lt;br /&gt;SHR: &lt;a href="http://shr.bearstech.com/"&gt;http://shr.bearstech.com/&lt;/a&gt;&lt;br /&gt;FDOM: &lt;a href="http://www.tuxbrain.com/fdom_en.html"&gt;http://www.tuxbrain.com/fdom_en.html&lt;/a&gt;&lt;br /&gt;Debian: &lt;a href="http://wiki.debian.org/DebianOnFreeRunner"&gt;http://wiki.debian.org/DebianOnFreeRunner&lt;/a&gt;&lt;br /&gt;Android: &lt;a href="http://people.openmoko.org/sean_mcneil/"&gt;http://people.openmoko.org/sean_mcneil/&lt;/a&gt; 或是 &lt;a href="http://freerunner.android.koolu.com/release-files"&gt;http://freerunner.android.koolu.com/release-files&lt;/a&gt; or  &lt;a href="http://t0ny.net/openmoko/images/android/"&gt;http://t0ny.net/openmoko/images/android/&lt;/a&gt; 在這邊放了一份 snapshot&lt;br /&gt;&lt;br /&gt;[安裝 SHR]&lt;br /&gt;SHR 是法國的 bearstech 所提供的版本, 主要以 illume 的 theme 為主的 Distribution. 安裝 SHR 很簡單, 只要 download image 後, 直接 copy uImage.bin 及 rootfs 的檔案到 SD 卡中.&lt;br /&gt;&lt;br /&gt;Step 1: 製作一張標準的開機 SD 卡 (最好需要 512 MB 或以上)&lt;br /&gt;Step 2: 複製 uImage.bin 到第一個 SD 卡的 vfat partition 中. 請注意, kernel 檔案必須是 uImage.bin , u-boot 才會認得.&lt;br /&gt;&lt;br /&gt;root@ubuntu:~/moko/shr_images# ls&lt;br /&gt;shr-image-om-gta02.jffs2 uImage-om-gta02-latest.bin&lt;br /&gt;root@ubuntu:~/moko/shr_images# cp uImage-om-gta02-latest.bin /media/disk-1/uImage.bin&lt;br /&gt;&lt;br /&gt;Step 3: 下載並解開 rootfs.tar.gz 檔案 (tar zvxf rootfs.tar.gz)&lt;br /&gt;Step 4: 到解開的檔案根目錄下, 將整個根目錄 structure 複製到 SD 卡的第 2 個 partition (ext2/ext3) 中 (cp -r . /media/disk-2)&lt;br /&gt;&lt;br /&gt;root@ubuntu:~/moko/shr# ls&lt;br /&gt;bin dev home linuxrc media proc tmp var boot etc lib local mnt sbin sys usr&lt;br /&gt;root@tony-ubuntu:~/moko/shr# cp -r . /media/disk-2&lt;br /&gt;&lt;br /&gt;Step 5: 用 sync 命令確定檔案已經完整複製過去&lt;br /&gt;Step 6: umount 後將 SD 卡放到 FR 中, 由 NAND 或是 NOR boot 開機選擇 Boot From SD card 選單開機.&lt;br /&gt;&lt;br /&gt;[安裝 Debian]&lt;br /&gt;在 SD 卡上安裝 Debian 很簡單, 但是程序有些不一樣. 因為 Debian community 寫了一個 script 讓安裝到 SD 卡的動作自動化. 我覺得這個 script 跟 mokomakefile 一樣, 都是發揮 linux 安裝優點, 而且非常有趣的 script.&lt;br /&gt;&lt;br /&gt;Step 1: 製作一張標準的開機 SD 卡 (最好需要 512 MB 或以上)&lt;br /&gt;Step 2: 將 SD 卡放到 FR 中, 同時以 2008.X 或 FSO milestone 3/4 開機&lt;br /&gt;Step 3: 建立 FR 到 Internet 的連線 (可透過 USB 或是 WiFi/Bluetooth)&lt;br /&gt;Step 4: 在 home 目錄下執行:&lt;br /&gt;$ wget http://pkg-fso.alioth.debian.org/freerunner/install.sh&lt;br /&gt;$ chmod +x install.sh&lt;br /&gt;$ ./install.sh all&lt;br /&gt;&lt;br /&gt;Step 5: 此時 install script 會將所有檔案, 複製到 SD 卡的第 1 個及第 2 個 partition 中.&lt;br /&gt;Step 6: 複製完後, 可檢查 uImage.bin 檔是不是放到第 1 個 partition 中, 以及相關的 rootfs 是不是放到第 2 個 partition 中.&lt;br /&gt;Step 7: 安裝完, 關機, 重新由 NOR 或 NAND u-boot 開機後, 選擇從 SD 卡開機即可.&lt;br /&gt;&lt;br /&gt;目前 Debian Distribution 預設的使用者 UI 是 FSO 的桌面, 所以如果你不確定你執行的是 Debian 還是 FSO, 可以直接用 uname -a 看 kernel 的版本.&lt;br /&gt;&lt;br /&gt;[安裝 Android]&lt;br /&gt;Android image 跟一般 image 不一樣的地方在於 Android 目前無法單獨放到 SD 卡上執行. Android 執行時, 需要 NAND flash 及一張空白的 SD (非 SDHC)卡在 FR 中. 所以要在 FR 執行 Android, 需要利用 dfu-util 或是 Neotools 安裝 Android 的 uImage 及 Android 的 rootfs 到 NAND flash 中, 並準備一張 128 MB (512 MB 或以上 preferred) 的 "空白" SD 卡.&lt;br /&gt;&lt;br /&gt;Android 需要的空白 SD 卡一樣需要 2 個 partition, 第一個 partition 建議還是使用 vfat (非必要), 第 2 個 partition 需要 ext3 格式. 第一個 partition 中, Android 在第一次開機時, 會建立存放 media 檔案 (影像/聲音) 的相關資料夾. 而在第 2 個 partition 中, Android 會建立 kernel 相關需要的設定檔 folder.&lt;br /&gt;&lt;br /&gt;Step 1: 準備 Android 所需要的空白 SD 卡 (非 SDHC 卡)&lt;br /&gt;Step 2: 下載 Android 所需要的相關檔案&lt;br /&gt;Step 3: 執行 dfu-util 將 Android 的 uImage.bin 及 rootfs dfu 到 FR 中. 請注意, kernel 檔案必須是 uImage.bin , u-boot 才會認得.&lt;br /&gt;&lt;br /&gt;Step 4: 將 SD 卡放到 FR 後開機. 一般來說, 第一次開機需時 2-3 分鐘. 若超過 5 分鐘無法開機, 請重新移除 SD 卡, 放回 SD 卡後, 重新開機.&lt;br /&gt;&lt;br /&gt;同時 2008/11 月前的 FR Android kernel 會發生 suspend 後無法 resume 的情形, 請 disable suspend (在 system settings 最下方有一個 suspend 的時間設定) 功能. 2008/11的 image 進入 suspend 無法開機時, 可刪除第 2 個 ext3 partition 的檔案 (kernel/setting 檔), 通常即可開機. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Koolu 目前 update 的 image 可以從下網址下載 &lt;a href="http://freerunner.android.koolu.com/release-files"&gt;http://freerunner.android.koolu.com/release-files&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-63146686240181616?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/63146686240181616/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=63146686240181616' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/63146686240181616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/63146686240181616'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/12/neo-freerunner-8-android-shr-fdom.html' title='Neo FreeRunner 新手手冊 (9) 安裝 Android, SHR, FDOM, Debian 到 SD (SDHC) 卡'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_y3T3s33suM8/SU95sk0RLuI/AAAAAAAAAQE/dAbafN_6Mt4/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2264747596610948429</id><published>2008-12-09T00:38:00.000-08:00</published><updated>2009-03-10T00:15:27.576-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (8) 已知的硬體問題</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5275530807480307490" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; HEIGHT: 31px" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/STZzUYV-TyI/AAAAAAAAANg/VXj9DPOlMVM/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FreeRunner 和一般的一般的嵌入式硬體開發及使用過程不太一樣的地方, 就是幾乎所有的開發流程跟硬體問題都可以在討論區找到. 同時也會有許多社群上的人會幫忙測試及提供解答. 所以原先當 FR 在開發流程中沒有測試到的 test case 產生的硬體 Bugs, 也都可以看到社群上的人幫忙整理及討論. 比較詳細的問題在以下的 wiki 網頁中.&lt;br /&gt;&lt;br /&gt;http://wiki.openmoko.org/wiki/Neo_FreeRunner_Hardware_Issues 以下是一些常見硬體 Bug 的問題及解決辦法.&lt;br /&gt;&lt;br /&gt;[你的硬體版本及軟體版本]&lt;br /&gt;FR 到目前已知有 A5, A6, A7 版本, 從 A5 版本起就是真正量產版本. 觀察版本有幾個方法, 一個是透過 part number, 另一個是透過 cat 手機內的硬體版本資訊. 用軟體指令無法區分是 850/1800/1900 或是 900/1800/1900 硬體版本.&lt;br /&gt;&lt;br /&gt;1) Software&lt;br /&gt;* kernel : uname -a&lt;br /&gt;* rootfs : cat /etc/version or cat /etc/om-version&lt;br /&gt;* u-boot: grep Bootloader /dev/mtdblock0 (yields the NOR u-boot version) or grep Bootloader /dev/mtdblock0 (yields the NOR u-boot version)&lt;br /&gt;&lt;br /&gt;2) Hardware&lt;br /&gt;* cat /proc/cpuinfo 或 cat&lt;br /&gt;從 revsion ATAG 得知目前的版本, 0350 是 A5, 0360 是 A6, 0370 是 A7 等&lt;br /&gt;&lt;br /&gt;3) Part number:&lt;br /&gt;* 56-21146-00 A5 850/1800/1900 版本&lt;br /&gt;* 56-21147-00 A5 900/1800/1900 版本&lt;br /&gt;* 56-21176-00 A6 850/1800/1900 版本&lt;br /&gt;* 56-21175-00 A6 900/1800/1900 版本&lt;br /&gt;* 56-21210-00 A7 850/1800/1900 版本&lt;br /&gt;* 56-21209-00 A7 900/1800/1900 版本&lt;br /&gt;&lt;br /&gt;[GPS]&lt;br /&gt;&lt;br /&gt;* 問題&lt;br /&gt;這是第一個被發現出來的問題, 就是使用者無法利用內建的 GPS 定位系統得到自己的定位. 這個問題會發生在量產品原因是在設計 test case 時, SD 卡及 GPS 協同運作時 GPS 的訊號是從增強過的 GPS 室內天線發出. 同時產測也是使用增強的 GPS 天線以便配合測試. 所以當使用者在正常 GPS 訊號強度下, 同時使用 SD 卡時, GPS 會無法定到位, 或是需要數十分鐘到數小時才能定位. 這個問題被社群反映後一週, 有人確認此情況只在 SD 卡插入時才發生. 之後確認是 SD card 的 sd_clk 產生的背景干擾.&lt;br /&gt;&lt;br /&gt;* 修正方式&lt;br /&gt;Openmoko 1 天後提出第一個這個問題的軟體解法, 就是當無 SD 卡存取動作時. 驅動程式會自動關閉 sd_clk 訊號. 這個修正已經套用在所有 2008 年 8 月後的 kernel 驅動程式中. 一週後提供了硬體解法, 該解法是在 sd_clk 跟 sd_gnd 中間加一個 10 pF 的電容過濾/改變/減低會影響 GPS 的高頻雜訊位置. 此修正已套用在 GTA02 A6 版以後的版本. 經過社群的測試, 軟體修正的效果跟硬體修正的效果類似, 所以 FR 的 GPS 問題目前用 2008 年 8 月以後的 kernel 即可解決.&lt;br /&gt;&lt;br /&gt;* 測試方式&lt;br /&gt;可以參考前面 GPS 相關的使用說明&lt;br /&gt;&lt;br /&gt;[GSM SIM 卡相容性]&lt;br /&gt;一般的手機有區分為 2G/2.5G 手機及 3G 手機, SIM 卡也有區分 2G 及 3G 的 SIM 卡, 同時 SIM 根據本身設計, 還有 5V, 3V, 1.8V 等不同電壓規格.&lt;br /&gt;GTA02 出貨用的 GSM firmware 預設為 moko8 或是 moko9-beta 1 版本. 目前 FR 可用及有問題的 SIM 卡, community 將資訊收集在以下網址:&lt;br /&gt;http://wiki.openmoko.org/wiki/FreeRunner_unable_to_work_with_3G_SIM_cards&lt;br /&gt;&lt;br /&gt;由於 GSM firmware 擁有獨立的版本, 記憶體儲存位置. 所以並沒辦法經由更換 kernel 或是 rootfs 解決.必須透過 TI 提供的 calypso firmware 更新程式 fulid 來更新. 目前最新的版本是 moko 10, 初步測試可解決 GSM 3G SIM 卡相容性的問題, 使用者可參考以下網址更新:http://wiki.openmoko.org/wiki/GSM/Flashing&lt;br /&gt;&lt;br /&gt;GSM firmware 更新有可能會失敗, 意思是可能會讓 GSM (手機功能) 無法使用.請注意&lt;br /&gt;&lt;br /&gt;[GSM Buzz]&lt;br /&gt;FR 在 A5/A6/A7 均受到程度大小不一的 GSM buzz (有些人稱為 TDD noise) 的問題, 這也是已知無法用軟體修正的問題. 主要是 FR 內 GSM RF 干擾發生的.目前討論區已有硬體改電阻加電容的 workaround 解法, Openmoko 提出的 A5/A6 版修正 SOP 在以下位置 &lt;a href="http://people.openmoko.org/joerg/GSM_EMI_noise/"&gt;http://people.openmoko.org/joerg/GSM_EMI_noise/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[SD 卡相容性]&lt;br /&gt;* 問題&lt;br /&gt;市面上有許多品牌/規格不同的 SD 卡, 並不是每一種 FR 上面都可以直接使用. 原因是因為各家 SD 卡供應商都有自己的控制晶片, 各晶片對於 SD 規格相容程度不一. 同時, 目前有 SD 卡也有兩種規格 SD 及 SDHC, 後者是較新的規格. 目前 2GB 以上的 SD card 均為 SDHC 的規格. 由於 FR 使用的 SD 驅動程式並沒有經過這麼多種類的 SD 卡測試, 所以僅提供了 "有限的" 相容性. 目前測試已知相容性最好的是 Sandisk 的 SDHC flash 卡.&lt;br /&gt;* 修正方式&lt;br /&gt;目前 Community 測試 microSD 卡最大的是 16 G 的 SDHC, 但是可能需要做一些 SD 卡時脈設定及調整的工作. 經過測試可使用的 SD 卡也都列在 wiki 中 http://wiki.openmoko.org/wiki/Supported_microSD_cards&lt;br /&gt;&lt;br /&gt;[電池過度放電的問題]&lt;br /&gt;*問題&lt;br /&gt;由於 FR 的軟/硬體組合設計上, 還有可能會發生關機不完全的漏電現象, 導致電池放電至低於 3.4v, 甚至到幾近 0v 的狀態. 此時會發生一個狀況, 就是當電池放到 FR 中後, 即使插上充電器, 還是無法充電的狀態. 原因是因為無法開機到最基本的 u-boot, 電源管理 IC 無法被正確設定可充電. 同時, 因為電池電壓已經過低, 甚至 PMU "不認為" 電池已經放入 FR 中. 所以導致無法即使插入充電器, 還是無法充電.&lt;br /&gt;*修正方式&lt;br /&gt;有幾個方式可以讓過度放電的電池重新充電:&lt;br /&gt;&lt;br /&gt;1) 最快, 也最方便的方式就是使用 Nokia BL-4C/5C/6C 相容的電池充電器替 FR 電池充電, 因為 FR 的電池基本上和 Nokia BL-4C/5C/6C 電池相容. 所以一般市面上 200 元的 Nokia 電池相容充電器均可替 FR 電池充電.&lt;br /&gt;&lt;br /&gt;2) 利用 BL-4C/5C/6C 的電池替 FR 開機後 (按下 Aux 鍵, 後按電源鈕從 NOR flash 開機), 接著連接 USB 充電器或是電腦的 USB 埠. FR 可以靠 USB 電源維持開機的狀態, 然後放入已過度放電的電池進行充電.&lt;br /&gt;&lt;br /&gt;3) 可以試著拔除電池, SIM 卡, 及 SD 卡, 用 USB 線連接 FR 及電腦或直接使用包裝中附的 USB 充電器, 然後按下 AUX 鍵及電源鍵開機至 NOR 的 u-boot (GTA02 A6 版及以後的硬體, 均應該設計搭配此功能), 開機後, 放入已過度放電的電池進行充電.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2264747596610948429?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2264747596610948429/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2264747596610948429' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2264747596610948429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2264747596610948429'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/12/neo-freerunner-8.html' title='Neo FreeRunner 新手手冊 (8) 已知的硬體問題'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/STZzUYV-TyI/AAAAAAAAANg/VXj9DPOlMVM/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2072513194296233023</id><published>2008-12-03T03:49:00.001-08:00</published><updated>2009-03-26T07:00:28.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (7) GPS 及 A-GPS 功能</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5275530807480307490" style="margin: 0px 10px 10px 0px; float: left; width: 88px; height: 31px;" alt="" src="http://4.bp.blogspot.com/_y3T3s33suM8/STZzUYV-TyI/AAAAAAAAANg/VXj9DPOlMVM/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Openmoko FreeRunner 使用的是 U-Blox 4 ANTARIS 的晶片組, 這個晶片組提供了 16 個 channel 的標準 GPS 及透過輔助資料快速定位的 A-GPS 功能. GPS 功能啟動後, 就可以從 Neo 的 ttySAC1 得到 NMEA 碼. U-Blox 的 GPS 功能跟一般 GPS 一樣, 一般所需時間從 40 秒 (U-Blox 規格) 到數分鐘不等. 這個時候可以透過一般 GPS 軟體 (TangoGPS/Openmoko AGPSUI/Others) 來做定位的動作. 完整 FR 的 GPS 相關資料可參考.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/GTA02_GPS"&gt;http://wiki.openmoko.org/wiki/GTA02_GPS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;U-Blox 的 A-GPS (Assisted GPS) 分為 A-GPS online 跟 A-GPS offline 兩種不一樣的功能, 差別如下:&lt;br /&gt;&lt;br /&gt;* AGPS online: 每次使用時, 需連上網路, 到 &lt;a href="http://agps.u-blox.com/"&gt;agps.u-blox.com&lt;/a&gt; 下載約 2-3 k 的定位輔助資料. 定位輔助資料包含了目前使用者上方應該有哪些衛星等資料. 每次下載的資料有效時間約 4 小時.&lt;br /&gt;&lt;br /&gt;* AGPS offline: 若原先硬體設計時就包含一顆額外的 Flash 記憶體, U-Blox GPS 在啟動時, 會先從該記憶體找輔助定位資料. 輔助定位資料可以預先從 &lt;a href="http://alp.u-blox.com/"&gt;http://alp.u-blox.com/&lt;/a&gt; 下載, 資料大小從數 k 到數十 k 不等, 資料最長有效時間約 2 個星期, 依下載的檔案而定. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;這 2 種定位方式都可以有效的將定位時間縮短到 20 秒內, FR 硬體設計只支援 AGPS online 的模式. FR 也提供 GPS 外接天線的 MMCX 插座, 當連接外部天線時, 硬體會自動切換訊號成外部的 GPS 訊號來源, 軟體無法知道硬體是使用內部還是外部的天線. 一般市面上的有 MMCX 的 GPS 天線, "原則" 上都可以使用. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;使用 A-GPS 功能可以加快定位的速度, 但是無 A-GPS 輔助, FreeRunner 還是擁有 GPS 的功能.&lt;br /&gt;&lt;br /&gt;[** 硬體BUGS**]&lt;br /&gt;A5 版硬體 (ATAG 0350) FR 的 GPS 功能有一個已知的問題, 就是 microSD 卡插入時, sd_clk 訊號, 可能會干擾 GPS 天線. 這個問題有兩種方法可以解決, 一個是更換新的 FR kernel driver, 這個 driver 可在不使用 microSD 卡時, 關閉 sd_clk. 一個是在硬體的 sd_clk 及 sd_gnd 腳位加一個電容, 濾掉部分會干擾 GPS 頻率的雜訊. 目前 kernel driver 修正已經套用在所有 2008/7 月後的 kernel, 相關資料, A6 版及以後的硬體, 也都已套用此修正, 請參考: &lt;a href="http://wiki.openmoko.org/wiki/GPS_Problems"&gt;http://wiki.openmoko.org/wiki/GPS_Problems&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[基本 GPS 使用及測試]&lt;br /&gt;使用 GPS 前, 必須先開啟 GPS 的電源. 開啟 GPS 電源可以下命令或是從 2008.X 使用者介面上的 Setting �, 開啟 GPS 電源. 然後接著可以把 ttySAC1 的資料吐出 來.&lt;br /&gt;&lt;br /&gt;root@om-gta02:~# echo "1" &amp;gt; /sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-gps.0/pwron&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# cat /dev/ttySAC1&lt;br /&gt;W 80040001*26&lt;br /&gt;$GPTXT,01,01,02,ROM CORE 5.00 Jan 09 200$GPRMC,,V,,,,,,,,,,N*53&lt;br /&gt;$GPVTG,,,,,,,,,N*30&lt;br /&gt;$GPGGA,,,,,,0,00,99.99,,,,,,*48&lt;br /&gt;$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30&lt;br /&gt;$GPGSV,1,1,00*79&lt;br /&gt;&lt;br /&gt;如果要檢查是否有得到定位, 可以可以從 ttySAC1 得到 GPS 吐出的 NMEA 資料, NMEA 資料基本的格式是: 項目 - 數據. 簡要的項目說明如下:&lt;br /&gt;$GPBOD - Bearing, origin to destination&lt;br /&gt;$GPBWC - Bearing and distance to waypoint, great circle&lt;br /&gt;$GPGGA - Global Positioning System Fix Data&lt;br /&gt;$GPGLL - Geographic position, latitude / longitude&lt;br /&gt;$GPGSA - GPS DOP and active satellites&lt;br /&gt;$GPGSV - GPS Satellites in view&lt;br /&gt;$GPHDT - Heading, True&lt;br /&gt;$GPR00 - List of waypoints in currently active route&lt;br /&gt;$GPRMA - Recommended minimum specific Loran-C data&lt;br /&gt;$GPRMB - Recommended minimum navigation info&lt;br /&gt;$GPRMC - Recommended minimum specific GPS/Transit data&lt;br /&gt;$GPRTE - Routes&lt;br /&gt;$GPTRF - Transit Fix Data&lt;br /&gt;$GPSTN - Multiple Data ID&lt;br /&gt;$GPVBW - Dual Ground / Water Speed&lt;br /&gt;$GPVTG - Track made good and ground speed&lt;br /&gt;$GPWPL - Waypoint location&lt;br /&gt;$GPXTE - Cross-track error, Measured&lt;br /&gt;$GPZDA - Date &amp;amp; Time&lt;br /&gt;&lt;br /&gt;參考這邊可以得到完整 NMEA 的說明. &lt;a href="http://www.gpsinformation.org/dale/nmea.htm"&gt;http://www.gpsinformation.org/dale/nmea.htm&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;由於 NMEA 資料很多, 若你只要定位與否相關資料, 可以cat /dev/ttySAC1 grep GGA , 就可以過濾掉額外的資訊.&lt;br /&gt;&lt;br /&gt;[使用 AGPSUI]&lt;br /&gt;Openmoko-agpsui2 是 Openmoko 常用的 GPS 測試程式, 可以以圖形方式, 看到 GPS 訊號強度, 衛星在天頂的位置, 定位詳細資料等. openmoko-agpsui2 可以透過 opkg install openmoko-agpsui2 或是從這邊下載 opkg 檔安裝:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/opkg/samples/agpsui_0.0+svnr3372-r0_armv4t%283%29.ipk"&gt;http://t0ny.net/openmoko/opkg/samples/agpsui_0.0+svnr3372-r0_armv4t(3).ipk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;下載後, 利用 scp copy 到 FR, 直接執行: opkg install agpsui_0.0+svnr3372-r0_armv4t(3).ipk 接著就可以按下畫面下的 one fix 執行.&lt;br /&gt;&lt;br /&gt;Openmoko-agpsui2 的原始程式碼, 可以從: &lt;a href="http://projects.openmoko.org/scm/?group_id=127"&gt;http://projects.openmoko.org/scm/?group_id=127&lt;/a&gt; 下載. 但是由於 Openmoko 正在 phase out 目前的 project server 並轉移到其他的 platform (如 google code), 所以你可以這邊 download offline 的 source. 詳細使用 AGPSUI 的方法, 請參考: &lt;a href="http://wiki.openmoko.org/wiki/Howto_Test_Your_GPS_with_agpsui"&gt;http://wiki.openmoko.org/wiki/Howto_Test_Your_GPS_with_agpsui&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[gpsd 及 TangoGPS]&lt;br /&gt;因為 ttySAC1 對 linux 來說是標準的 serial port, 所以當某一個程式 (如 openmoko-agpsui) 佔住後, 其他程式就無法讀取 GPS 資料. 為了要解決多個程式使用 GPS 的問題, 同時增加客戶端程式寫作的彈性及架構. 所以 community 有人做了一個 GPS 的 daemon, 叫做 gpsd ( &lt;a href="http://gpsd.berlios.de/"&gt;http://gpsd.berlios.de/&lt;/a&gt; ). 應用程式可以透過網路連線 (localhost) 方式 (TCP port 2947), 讓多個不同的程式同時取得 GPS 的定位資料. GPSD 相關的說明請參考&lt;a href="http://wiki.openmoko.org/wiki/Gpsd#GPS_on_GTA02"&gt;http://wiki.openmoko.org/wiki/Gpsd#GPS_on_GTA02&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;TangoGPS ( &lt;a href="http://www.tangogps.org/"&gt;http://www.tangogps.org/&lt;/a&gt; ) 則是一個使用 gpsd 及 OpenStreetMap/Topo/Aerial 的地圖程式. 它提供了一個類似 2008.X 的 Location 程式的功能, 但是它可以提供更多的定位相關資料, 例如目前速度, 平均速度等. 含還蠻適合運動使用. 要使用 TangoGPS 前, 必須先安裝 gpsd.&lt;br /&gt;&lt;br /&gt;root@om-gta02:~# pkill packagekit&lt;br /&gt;root@om-gta02:~# opkg install gpsd&lt;br /&gt;root@om-gta02:~# opkg install tangogps_0.9.3-r1_armv4t.ipk &lt;/div&gt;&lt;div&gt;&lt;br /&gt;如果 gpsd 或相關套件找不到, 你可能要把 opkg feed 換到 testing feed (/etc/opkg/*.conf) 安裝完後, 啟動 tangoGPS 前, 必須修改 /etc/default/gpsd �, gpsd 的 tty 設定.&lt;br /&gt;&lt;br /&gt;設定成 GPS_DEV="/dev/ttySAC1". 更多的設定 (FSO/others), 請參考 &lt;a href="http://www.tangogps.org/gps/articles/7-Installation.html"&gt;http://www.tangogps.org/gps/articles/7-Installation.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[使用 A-GPS]&lt;br /&gt;每一間 GPS 廠商都有不同的 A-GPS 實做方法, U-Blox 提供了公開的文件及帳號申請程序, 讓使用 U-Blox 的使用者可以使用 A-GPS 服務. 使用 A-GPS 的流程大致如下:&lt;br /&gt;&lt;br /&gt;* 申請 A-GPS 帳號: 發一封主旨跟內容都空白的信, 到 &lt;a href="mailto:agps-account@u-blox.com"&gt;agps-account@u-blox.com&lt;/a&gt; 申請一個 A-GPS online 的帳號&lt;br /&gt;* 將 FR 利用 GPRS/Wi-Fi 或其他方式連上 Interent, 利用帳號及目前大略的經緯度, 利用 &lt;a href="http://svn.openmoko.org/developers/matt_hsu/agps-online/"&gt;http://svn.openmoko.org/developers/matt_hsu/agps-online/&lt;/a&gt; 的程式, 連上 U-Blox 網站. 取得 A-GPS 定位輔助資料&lt;br /&gt;* 這個程式會利用 U-Blox 的 binary 指令, 將定位輔助資料送進 GPS 模組&lt;br /&gt;* GPS 模組利用這些資料, 節省搜尋衛星的時間&lt;br /&gt;&lt;br /&gt;其他更詳細的方式, 請參閱 &lt;a href="http://wiki.openmoko.org/wiki/GTA02_GPS"&gt;http://wiki.openmoko.org/wiki/GTA02_GPS&lt;/a&gt; .&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2072513194296233023?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2072513194296233023/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2072513194296233023' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2072513194296233023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2072513194296233023'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/12/neo-freerunner-7-gps-gps.html' title='Neo FreeRunner 新手手冊 (7) GPS 及 A-GPS 功能'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y3T3s33suM8/STZzUYV-TyI/AAAAAAAAANg/VXj9DPOlMVM/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6246908566430031195</id><published>2008-12-02T00:31:00.001-08:00</published><updated>2009-09-23T10:07:09.242-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (6) 使用 Debug Board</title><content type='html'>&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 88px; FLOAT: left; HEIGHT: 31px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5275110179559254370" border="0" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/STT0wnOtKWI/AAAAAAAAAM4/6WGyyCzDFe8/s320/88x31_cc_sa_nc.png" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;Debug Board 對一般應用程式開發人員來說, 可能並不是十分需要. 但是換個角度來說, Openmoko 擁有完全開放的硬體, 從網路上也可以下載 FreeRunner 以及 Neo1973 的硬體線路圖. 同時, Openmoko 的機器在設計上, 就已經將常用的 debug port 如 JTAG/UART/SPI/I2C 等介面連接到主板上的 Debug Connector, 或是將這些 test point 留在主板上容易接取的地方. 簡單來說 Debug Board 是 FreeRunner 設計完全開放硬體的一部分 ;) 如果要學習或練習嵌入式系統開發, 最好還是有 Debug Board 比較好. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5275113057203678050" border="0" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/STT3YHSma2I/AAAAAAAAANI/GA4twSI7kGQ/s320/SANY0016.JPG" /&gt;&lt;br /&gt;Debug Board 留了 1 個 20 pin 的 JTAG 延伸插座, 以及 2 個 10 pin 的 UART/SPI/I2C 插座, 如果有需要, 焊上這些接頭, 就可以在其他的裝置上使用 Openmoko Debug Board. 不過需要注意的地方是, Debug Board 的 JTAG signaling 是使用 3.3v, 對於一些 1.8v 或 5v 的 JTAG signaling 裝置並不適用.&lt;br /&gt;&lt;br /&gt;Openmoko 的 Debug Board 共有 3 個版本, 第 3 版 (v3) 跟前面兩個版本的差別在於: 修改了電源及完全符合 USB 規格的一些設計, 同時也將 FR 上 Debug port 預留的 SPI 及 I2C bus 接出到 Debug Board 上. 同時第 3 版的 Debug Board 也增加一個 GPIO 接腳設定功能, 讓 Debug Board 能透過 pull-high 電路讓 FR 上面的 NOR 可以開啟被寫入模式. Debug Board 的電路圖, 可以從以下網址下載.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://downloads.openmoko.org/developer/schematics/"&gt;http://downloads.openmoko.org/developer/schematics/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;若要作 JTAG 和 UART 終端機的 Debug 功能, 這 3 個版本都可以達到一樣的功能. 同時 FreeRunner 預設的 u-boot 環境變數, Debug 輸出是 ttyACM0, 並不一定要使用 Debug Board 才能進行 u-boot 的操控.&lt;br /&gt;&lt;br /&gt;Debug board 上有一顆 FTDI FT2232 的晶片, 它本身具備有兩個 UART port, 這個晶片奇特的地方在於它可以透過軟體 (不同的函式庫), 轉換不同的通訊協定 (a little like bitbang), 達到支援 RS-232/482/485, DI/O, Address 或是 JTAG. FT2232 的 JTAG 比 Wiggler 快了大約 20-30 倍, 對於除錯時, 節省大量資料寫入的時間有極大幫助 (例如寫入 kernel 及 u-boot 到 nand flash 中)&lt;br /&gt;&lt;br /&gt;目前 Openmoko default 的設定是當成 JTAG (port 1) 及 UART (port 2). 同時, 原本這顆 chip 的標準 USB ID 是 FTDI 0403:6010. 0403 是 FTDI 公司的 USB ID, 而 6010 是依據產品別給的不同 ID. &lt;/p&gt;&lt;p&gt;Openmoko debug board 預設的 USB ID 是 1457:5118. 1457 是 FIC 的公司 USB ID. 而 Openmoko 後期的 Freerunner 使用新申請的 1D50 開頭作為標準 ID.&lt;br /&gt;&lt;br /&gt;你可以從下面的網址, 找到所有已註冊 USB.org 的公司/裝置 ID.&lt;br /&gt;&lt;a href="http://www.linux-usb.org/usb.ids"&gt;http://www.linux-usb.org/usb.ids&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;或 Openmoko 的 wiki, 也紀錄了使用的 ID 位址.&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/USB_Product_IDs"&gt;http://wiki.openmoko.org/wiki/USB_Product_IDs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FTDI 公司也提供了標準的 Windows 驅動程式, 讓你可以在 Windows 利用 FT2232 模擬成雙 UART port 的裝置, 或是一個 JTAG, 一個 UART 裝置. 但是由於 Windows 只認識 FTDI 的 0403:6010 ID, 所以必須修改一下 .inf 檔. 下面可以下載 Windows 下的 FTDI 驅動程式: &lt;a href="http://t0ny.net/openmoko/driver/debugboard_win32/"&gt;http://t0ny.net/openmoko/driver/debugboard_win32/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;除了 Openmoko 外, Linux 社群也常用另一種類似建立在 FT2232 裝置來做 JTAG, 例如 Amontec JTAGkey: &lt;a href="http://www.amontec.com/jtagkey.shtml"&gt;http://www.amontec.com/jtagkey.shtml&lt;/a&gt; . 這種裝置比較小巧, 同時支援 1.4V 到 5V 的 JTAG signaling, 常被配合標準公版的 20 pin 插座使用.&lt;br /&gt;&lt;br /&gt;[安裝 FTDI lib]&lt;br /&gt;&lt;br /&gt;會用到 3 個不同的 package, 分別是 libftdi-dev, libftdi-eeprom, libftdi0, 建議開始使用 Debug Board 前先安裝這些 package.&lt;br /&gt;&lt;br /&gt;[連接 FR 的 Debug Output (UART)]&lt;br /&gt;&lt;br /&gt;由於 Linux 只認識 Default 的 FTDI 裝置 (0403:6010), 所以 Openmoko Debug Board 需要額外載入 FTDI 的 SIO driver. 利用以下指令可載入 FTDI 的 SIO driver. 請使用 root 或是 sudo 來做 I/O port 設定動作.&lt;br /&gt;&lt;br /&gt;root@ubuntu:~# rmmod ftdi_sio&lt;br /&gt;&lt;a href="mailto:root@ubuntu:~#modprobe"&gt;root@ubuntu:~#modprobe&lt;/a&gt; ftdi_sio vendor=0x1457 product=0x5118&lt;br /&gt;&lt;br /&gt;成功之後會在 /dev 目錄下看到 ttyUSB0 及 ttyUSB1, Openmoko 使用 USB1 作為 UART 連線. 連線參數為 115200, N, 8, 1, no hardware flow control 成功後, 使用 minicom/cutecom 或是 cu 可從 UART 輸出得到 Debug port 輸出資料.&lt;br /&gt;&lt;br /&gt;[使用 JTAG]&lt;br /&gt;&lt;br /&gt;Openmoko 預設的 JTAG 工具是 OpenOCD + Debug Board . OpenOCD 的功能像是一個 middleware (TCP sever with JTAG protocol), 提供了 JTAG 及 gdb 的介面. OpenOCD 詳細的資料可參考:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://openocd.berlios.de/web/"&gt;http://openocd.berlios.de/web/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;OpenOCD 也支援了許多不同的處理器架構, 從 ARM7 到 ARM11 都可以使用, 可以下載原始碼後編譯, 或直接從以下網址下載已經編譯好的執行程式. 同時, OpenOCD 需要 FTDI 的 library - libftdi, 版本需要 0.8 或之後的版本.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ftdichip.com/Drivers/3rdPartyDrivers.htm#Linux"&gt;http://www.ftdichip.com/Drivers/3rdPartyDrivers.htm#Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.intra2net.com/de/produkte/opensource/ftdi/index.php"&gt;http://www.intra2net.com/de/produkte/opensource/ftdi/index.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;可試著從前面敘述的 apt-get install 包括 libftdi-dev, libftdi-eeprom, libftdi0,libusb 等必要的 package. 也可以從這&lt;br /&gt;&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/util/host/gta02/openocd/"&gt;http://t0ny.net/openmoko/util/host/gta02/openocd/&lt;/a&gt; 下載已編譯好的 openocd 執行檔及 openocd 需要的裝置設定檔. 接下來:&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 1&amp;gt; 連接 Neo 及 Debug Board, 以及連接 Debug Board 到 PC USB port, 開啟 Neo 電源, 然後執行:&lt;br /&gt;&lt;br /&gt;root@ubuntu:~/GTA02-DM1/tmp# ./openocd -f openocd-debugv2.cfg&lt;br /&gt;Info: openocd.c:84 main(): Open On-Chip Debugger (2007-01-31 12:00 CET)&lt;br /&gt;&lt;br /&gt;正常執行狀況下, 螢幕會停住在Open On-Chip Debugger (2007-01-31 12:00 CET) 這一行.&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 2&amp;gt; 接下來使用 telnet localhost 4444 即可進入 CPU, 透過 JTAG 下 command.&lt;br /&gt;&lt;br /&gt;root@ubuntu:~# telnet localhost 4444&lt;br /&gt;Trying 127.0.0.1...&lt;br /&gt;Connected to localhost.&lt;br /&gt;Escape character is '^]'.&lt;br /&gt;Open On-Chip Debugger&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;gt; halt&lt;br /&gt;requesting target halt...&lt;br /&gt;&amp;gt; Target 0 halted&lt;br /&gt;target halted in ARM state due to debug request, current mode: Supervisor&lt;br /&gt;cpsr: 0x60000053 pc: 0x33f8b7ec&lt;br /&gt;MMU: disabled, D-Cache: enabled, I-Cache: enabled&lt;br /&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 3&amp;gt; 執行需要的 script&lt;br /&gt;&lt;br /&gt;OpenOCD 可以透過 script 執行連續的 command, 例如寫入多個不同的位址, 大小的檔案到 NAND/SDRAM 的記憶體中並執行. 命令格式是:&lt;br /&gt;&lt;br /&gt;&amp;gt; script "script.ocd"&lt;br /&gt;&lt;br /&gt;Openocd 執行檔的下載目錄中, 有一個 script.ocd 範例, 若想要學習如何手動寫 u-boot 到 NAND 記憶體中或更多 script 命令, 請參考:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/U-boot"&gt;http://wiki.openmoko.org/wiki/U-boot&lt;/a&gt; 的內容.&lt;br /&gt;&lt;br /&gt;如果看到以下訊息, 代表 JTAG 連線失敗, 請重新連接 USB, 關閉 FR 電源, 開啟 FR 電源, 按下 Debug Board Reset 鈕, 試試是否可以正常停在 Open On-Chip Debugger (2007-01-31 12:00 CET) 這一行..&lt;br /&gt;root@ubuntu:~/GTA02-DM1/tmp# ./openocd -f openocd-debugv2.cfg&lt;br /&gt;Info: openocd.c:84 main(): Open On-Chip Debugger (2007-01-31 12:00 CET)&lt;br /&gt;Error: jtag.c:1181 jtag_examine_chain(): JTAG communication failure, check&lt;br /&gt;connection, JTAG interface, target power etc.&lt;br /&gt;&lt;br /&gt;[打開 NOR flash 的寫入功能]&lt;br /&gt;&lt;br /&gt;在 FreeRunner 出廠時, NOR flash 預設是防寫的狀態, 所以即使 NAND flash 裡面的 u-boot 受損, 依舊可按 AUX 鍵及電源鍵, 由 NOR 開機後執行更新 image 的工作. 簡單來說, NOR 裡面的 u-boot 包含以下特性:&lt;br /&gt;&lt;br /&gt;* 預設是不可變更的&lt;br /&gt;* NOR u-boot 包含了 u-boot/splash screen/environmental variable 環境變數 (MTD parts, default tty output)&lt;br /&gt;* 開機時按下 AUX 鍵, Samsung stepping stone 會跳到 NOR 執行開機的動作&lt;br /&gt;&lt;br /&gt;V3 版的 Debug Board 有提供一個 pull-high 電阻 IO 可以解除 FR 上的 NOR 防寫功能, 這個功能必須要透過一個小的公用程式 norwp 啟動.&lt;br /&gt;&lt;br /&gt;norwp 的原始碼可以從 &lt;a href="http://svn.openmoko.org/trunk/src/host/norwp/"&gt;http://svn.openmoko.org/trunk/src/host/norwp/&lt;/a&gt; 下載. 要編譯這個程式, 需要 libusb 及 libftdi . 也可以從下面的網址, 下載編譯過的 binary. &lt;a href="http://t0ny.net/openmoko/samples/bin/norwp/"&gt;http://t0ny.net/openmoko/samples/bin/norwp/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;使用這個 Utility 很簡單, 只要連接 Debug Board 及 FR 後, 執行:&lt;br /&gt;&lt;a href="mailto:root@ubuntu:~/norwp"&gt;root@ubuntu:~/norwp&lt;/a&gt;# ./norwp rw&lt;br /&gt;&lt;br /&gt;就可以開啟 NOR 寫入的功能, 而:&lt;br /&gt;root@ubuntu:~/norwp# ./norwp ro 可關閉寫入的功能&lt;br /&gt;&lt;br /&gt;從 openmoko 的 git server, 可以 download u-boot 及 NOR 版 u-boot 的 source code. &lt;a href="http://git.openmoko.org/?p=u-boot.git;a=summary"&gt;http://git.openmoko.org/?p=u-boot.git;a=summary&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;簡單來說, 用 git clone 下來後, 使用 openmoko 官方的 toolchain 即可編譯出相關的檔案. 關於 toolchain 的用法, 這邊先略過. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6246908566430031195?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6246908566430031195/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6246908566430031195' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6246908566430031195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6246908566430031195'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/12/neo-freerunner-6-debug-board.html' title='Neo FreeRunner 新手手冊 (6) 使用 Debug Board'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_y3T3s33suM8/STT0wnOtKWI/AAAAAAAAAM4/6WGyyCzDFe8/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3091306068431310967</id><published>2008-12-01T01:09:00.001-08:00</published><updated>2009-03-11T20:40:37.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (5) 透過 sysfs 作硬體開關控制</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5274747370540114946" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/STOqyWT4JAI/AAAAAAAAAMY/nGm8OdtWC5s/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在 Openmoko 的官方網頁中, FreeRunner 是基於以下的規格需求所開發出來:&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/Neo1973_GTA02_Hardware"&gt;http://wiki.openmoko.org/wiki/Neo1973_GTA02_Hardware&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在此網頁中, 包含 3 個重點, 分別是:&lt;br /&gt;&lt;br /&gt;* 規格設定條件&lt;br /&gt;* 硬體選擇&lt;br /&gt;* 簡要的改版 - 生產紀錄&lt;br /&gt;&lt;br /&gt;簡單來說, 在 FreeRunner 中包含了以下的硬體.&lt;br /&gt;&lt;br /&gt;* Samsung S3C2442 B54 MCP (含 64 MB SDRAM, 256 MB NAND), running @400Mhz&lt;br /&gt;* 外接一顆 64 MB SDRAM&lt;br /&gt;* ST 8 MB NOR flash&lt;br /&gt;* NXP PCF50633 04 N3 電源管理 IC&lt;br /&gt;* 2顆 LED, Aux 紅色, Power 藍/橘&lt;br /&gt;* S-Media 圖形加速器&lt;br /&gt;* u-blox 4 A-GPS&lt;br /&gt;* microSD card (插槽) (目前 community 測試最大支援到 16 G 的 SDHC microSD 卡)&lt;br /&gt;* 2 顆 ST 3-axis 的 accelerometer (8G/2G 敏感度及 interrupt 模式)&lt;br /&gt;* Atheros AR6001GZ Wi-Fi, firmware version &lt;a href="http://2.0.0.89/"&gt;2.0.0.89&lt;/a&gt; (Accton module)&lt;br /&gt;* CSR BC4 Bluetooth v2.0 (Delta module)&lt;br /&gt;* USB host (同時可提供 5V power, 不需外接電源)&lt;br /&gt;* Calypso GSM/GPRS modem&lt;br /&gt;* 支援聰明電池 (coulomb battery), 可模擬 HDQ 協定的硬體 GPIO 設計&lt;br /&gt;* 硬體可讀版號, 會對應從 u-boot 傳到 kernel 的 ATAG 值 (0350 = v5 版, 0360 = v6 版)&lt;br /&gt;&lt;br /&gt;FreeRunner 的完整電路圖, 也可以從 Openmoko 網站下載:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://downloads.openmoko.org/developer/schematics/"&gt;http://downloads.openmoko.org/developer/schematics/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;大部分的硬體, 都可以透過 /sysfs 來作開關及讀取一些基本資料. 詳細的內容, 可參閱 wiki 下的網址. &lt;a href="http://wiki.openmoko.org/wiki/GTA02_sysfs"&gt;http://wiki.openmoko.org/wiki/GTA02_sysfs&lt;/a&gt; 同時, sysfs 對應的位置會因為 upstream 相容性改變, 2.6.28 開始, 因為 upstream 的關係, 目錄位址開始變更. 但是基本使用方式及原則是不變的, 可以用 find 指令來找相關的位置.&lt;br /&gt;&lt;br /&gt;舉例來說:&lt;br /&gt;&lt;br /&gt;&amp;lt;開關 Aux 鍵的 LED&amp;gt;&lt;br /&gt;要開關 Aux key LED, 可以直接使用以下命令:&lt;br /&gt;echo "255" &amp;gt; /sys/devices/platform/gta02-led.0/leds/gta02-aux:red/brightness&lt;br /&gt;或是&lt;br /&gt;echo "0" &amp;gt; /sys/devices/platform/gta02-led.0/leds/gta02-aux:red/brightness&lt;br /&gt;&lt;br /&gt;&amp;lt;讀取電池的充電狀態&amp;gt;&lt;br /&gt;讀取 PMU 的的充電狀態是快充還是其他狀態:&lt;br /&gt;cat /sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/chgmode&lt;br /&gt;&lt;br /&gt;&amp;lt;讀取電池電量&amp;gt; 讀出的數值以百分比表示&lt;br /&gt;cat /sys/devices/platform/bq27000-battery.0/power_supply/bat/capacity&lt;br /&gt;&lt;br /&gt;&amp;lt;讀取硬體版本&amp;gt;&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# cat /sys/devices/platform/neo1973-version.0/pcb&lt;br /&gt;&lt;br /&gt;利用 sysfs, 就可以利用 script 開關硬體, 或是執行簡單的系統測試. 但是例如像是 wi-fi 模組是直接透過 SDIO 連接, 就無法用硬體的方式 power off 模組, 只能用軟體的方式執行 power off 命令.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3091306068431310967?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3091306068431310967/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3091306068431310967' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3091306068431310967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3091306068431310967'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/12/neo-freerunner-6-sysfs.html' title='Neo FreeRunner 新手手冊 (5) 透過 sysfs 作硬體開關控制'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y3T3s33suM8/STOqyWT4JAI/AAAAAAAAAMY/nGm8OdtWC5s/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2788256547145552370</id><published>2008-11-27T19:46:00.001-08:00</published><updated>2008-12-02T02:06:22.224-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (4) 建立 FreeRunner 對外網路連線 - Bluetooth</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5273551859635460354" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/SS9redIsGQI/AAAAAAAAAMQ/37WxFOPUlxg/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;Bluetooth 和 GPRS 裝置和 FreeRunner (以下簡稱 FR) 上的 USB 連線或 Wi-Fi 連線不一樣, 在使用前, 需要額外透過 command 先將這些裝置開啟, 然後才能執行. 先針對 Bluetooth 裝置說明. 詳細的內容可以參考 wiki 上的 &lt;a href="http://wiki.openmoko.org/wiki/Manually_using_Bluetooth"&gt;http://wiki.openmoko.org/wiki/Manually_using_Bluetooth&lt;/a&gt; 網頁的說明. 此外 FR 上面的 Bluetooth 是 Delta 的模組, chipset 是 CSR 的 Bluetooth 2.0.&lt;br /&gt;&lt;br /&gt;FR 使用的 Bluetooth stack 是 Marcel 的 BlueZ, 但是 BlueZ 能提供的功能, 在 FR 上都可以達到. 但 FR 並沒有提供完整的 profile 操作介面供連線/功能操作使用.&lt;br /&gt;&lt;br /&gt;直接使用 BlueZ 的公用程式, 確實可以進行常見的 GAP, FTP, HID, PAN 的 "功能", 唯一的問題是: 必須手動完成大部分的功能及 handshake 驗證, 或是需要修改 /etc/Bluetooth/hcid.conf 的設定.&lt;br /&gt;&lt;br /&gt;FR 上的 Bluetooth 是透過 USB 介面連接到 CPU, 預設的狀態是關閉的. 所以使用前必須先開啟 Bluetooth. 開啟的方式很簡單, 只要透過 command 就可以直接開關 Bluetooth 裝置.&lt;br /&gt;&lt;br /&gt;同時, 由於 etc/network/interfaces 裡面的 Bluetooth 設定, 預設是 iface bnep0&lt;br /&gt;&lt;br /&gt;inet dhcp. 建議先用 # disable 掉這個功能.&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 1&amp;gt; 開啟 FR 上的 Bluetooth device &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# echo 1 &amp;gt; /sys/bus/platform/devices/neo1973-pm-bt.0/power_on&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# echo 0 &amp;gt; /sys/bus/platform/devices/neo1973-pm-bt.0/reset&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 2&amp;gt; 執行 hciconfig, 透過這個命令我們可以確認 Bluetooth 是否正常執行, 以及取得目前 FR Bluetooth 的位址.&lt;br /&gt;&lt;br /&gt;root@om-gta02:~# hciconfig&lt;br /&gt;hci0: Type: USB&lt;br /&gt;BD Address: 00:06:6E:16:DE:BD ACL MTU: 384:8 SCO MTU: 64:8&lt;br /&gt;UP RUNNING PSCAN ISCAN&lt;br /&gt;RX bytes:949 acl:0 sco:0 events:23 errors:0&lt;br /&gt;TX bytes:342 acl:0 sco:0 commands:23 errors:0&lt;br /&gt;&lt;br /&gt;如果沒有得到上述訊息, 可以用 hciconfig hci0 up 強迫啟動, 或是重複 Step 1 到 2.&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 3&amp;gt;&lt;br /&gt;&lt;br /&gt;此時連線步驟要先切回 Host (ubuntu) 端, 請先開啟 Host 端的 Bluetooth, 執行以下命令.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="mailto:root@ubuntu"&gt;root@ubuntu&lt;/a&gt;:~# modprobe bnep&lt;br /&gt;&lt;a href="mailto:root@ubuntu"&gt;root@ubuntu&lt;/a&gt;:~# pand --listen --role NAP&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 4&amp;gt; 在 FR 執行以下命令, 00:11:22:AA:BB:CC 處請填上 Host 端的 Bluetooth MAC 位址.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# pand -c 00:11:22:AA:BB:CC --service NAP --autozap&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# ip a add &lt;a href="http://10.0.0.2/24"&gt;10.0.0.2/24&lt;/a&gt; dev bnep0&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# ip r del default&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# ip r add default via &lt;a href="http://10.0.0.1/"&gt;10.0.0.1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;你可以從這邊下載完整的 script&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/samples/script/bt_net.sh"&gt;http://t0ny.net/openmoko/samples/script/bt_net.sh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;有時建立連線會失敗, 或 bnep0 沒啟動, 請執行下面這一行指令.&lt;br /&gt;&lt;br /&gt;root@om-gta02:~# ip l set bnep0 up&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 5&amp;gt; 然後回到 PC 端, 設定 Bluetooth network 及 IP forwarding 的規則 &lt;/div&gt;&lt;br /&gt;&lt;div&gt;FR 建立連線後, 可先用:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;root@ubuntu:~# pand --show --list -l&lt;br /&gt;應該會看到:&lt;br /&gt;Bnep0 00:06:6E:XX:XX:XX NAP&lt;br /&gt;看到這個訊息代表 FR 真的連上線了, 然後執行:&lt;br /&gt;&lt;a href="mailto:root@ubuntu"&gt;root@ubuntu&lt;/a&gt;:~# ip a add &lt;a href="http://10.0.0.1/24"&gt;10.0.0.1/24&lt;/a&gt; dev bnep0&lt;br /&gt;&lt;a href="mailto:root@ubuntu"&gt;root@ubuntu&lt;/a&gt;:~# ip l set bnep0 up&lt;br /&gt;&lt;br /&gt;接著可以從 Host 端, 及 FR 端分別 ping &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt; 及 &lt;a href="http://10.0.0.1/"&gt;10.0.0.1&lt;/a&gt; 看看是否可以雙向連上線.&lt;br /&gt;&lt;br /&gt;&lt;a href="mailto:root@ubuntu"&gt;root@ubuntu&lt;/a&gt;:~# ping &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt;&lt;br /&gt;PING &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt; (&lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt;) 56(84) bytes of data.&lt;br /&gt;64 bytes from &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt;: icmp_seq=1 ttl=64 time=47.2 ms&lt;br /&gt;64 bytes from &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt;: icmp_seq=2 ttl=64 time=22.0 ms&lt;br /&gt;64 bytes from &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt;: icmp_seq=3 ttl=64 time=24.0 ms&lt;br /&gt;64 bytes from &lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt;: icmp_seq=4 ttl=64 time=17.0 ms&lt;br /&gt;&lt;br /&gt;或是從 ifconfig 中看到.&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~# ifconfig&lt;br /&gt;bnep0 Link encap:Ethernet HWaddr 00:06:6E:16:DE:BD&lt;br /&gt;inet addr:&lt;a href="http://10.0.0.2/"&gt;10.0.0.2&lt;/a&gt; Bcast:&lt;a href="http://0.0.0.0/"&gt;0.0.0.0&lt;/a&gt; Mask:&lt;a href="http://255.255.255.0/"&gt;255.255.255.0&lt;/a&gt;&lt;br /&gt;inet6 addr: fe80::206:6eff:fe16:debd/64 Scope:Link&lt;br /&gt;UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1&lt;br /&gt;RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;TX packets:268 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;collisions:0 txqueuelen:1000&lt;br /&gt;RX bytes:284 (284.0 B) TX bytes:11737 (11.4 KiB)&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 6&amp;gt;&lt;br /&gt;&lt;br /&gt;如果需要, 請在 Host 端, 和 USB 連線一樣, 再加入 packet forward 的功能. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2788256547145552370?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2788256547145552370/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2788256547145552370' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2788256547145552370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2788256547145552370'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/11/neo-freerunner-4-freerunner-bluetooth.html' title='Neo FreeRunner 新手手冊 (4) 建立 FreeRunner 對外網路連線 - Bluetooth'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y3T3s33suM8/SS9redIsGQI/AAAAAAAAAMQ/37WxFOPUlxg/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8890540553446923904</id><published>2008-11-26T03:00:00.001-08:00</published><updated>2009-11-08T06:59:20.314-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (3) 建立 FreeRunner 對外網路連線 - USB/Wi-Fi</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5272919972143717922" style="margin: 0px 10px 10px 0px; float: left; width: 88px; height: 31px;" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/SS0sxwywXiI/AAAAAAAAAMI/iLEEmmbMQXw/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FreeRunner 分別可以透過無線 (Bluetooth, Wi-Fi, GPM(GPRS) 以及有線 (USB) 的方式. 但是從使用者介面上可以完成部分 Wi-Fi 連線功能外, 其他的連線方式可能需要進到命令模式, 然後透過手動下 script 的方式完成.&lt;br /&gt;&lt;br /&gt;不同的 Distribution 可以用的 script (例如 FSO 有提供許多的 python binding service) 也不一樣, 當然最原始的方式就是直接下 bash script. 以下提供了 Host (PC) 端及 FreeRunner 端的連線 command 方式. 接下來以 ubuntu 為例, 分別設定以下幾種連線.&lt;br /&gt;&lt;br /&gt;[USB 連線]&lt;br /&gt;&lt;br /&gt;FreeRunner 的 USB port 預設在 USB 1.1 slave 的模式, 可以透過 Host 端電腦的 NAT 和外部的網路建立雙向連線. 下面分別是 Host PC/Neo 端分別需要下的命令.&lt;br /&gt;&lt;br /&gt;更詳細的資料可以參考: &lt;a href="http://wiki.openmoko.org/wiki/USB_Networking"&gt;http://wiki.openmoko.org/wiki/USB_Networking&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* Host (ubuntu) 端&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Host 端分成兩個步驟, 第一段是建立 SSH 的連線, 第二段是建立 packet forwarding 規則.&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 1&amp;gt;&lt;br /&gt;&lt;br /&gt;sudo ifconfig usb0 &lt;a href="http://192.168.0.200/"&gt;192.168.0.200&lt;/a&gt; netmask &lt;a href="http://255.255.255.0/"&gt;255.255.255.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ssh &lt;a href="mailto:root@192.168.0.200"&gt;root@192.168.0.200&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 2&amp;gt;&lt;br /&gt;&lt;br /&gt;Sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s &lt;a href="http://192.168.0.0/24"&gt;192.168.0.0/24&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sudo sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;&lt;br /&gt;不同的 distribution/version 會有不同的指令設定, 不同防火牆也可能會有不同的結果. 可以直接參考 &lt;a href="http://wiki.openmoko.org/wiki/USB_Networking"&gt;http://wiki.openmoko.org/wiki/USB_Networking&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* FreeRunner 端:&lt;br /&gt;&lt;br /&gt;Host PC 端跟 FreeRunner 連線後, FreeRunner 的預設 image 需要 "額外" 的一項設定, 需要加入 DNS nameserver 的名稱解釋服務.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;echo nameserver &lt;a href="http://208.67.222.222/"&gt;208.67.222.222&lt;/a&gt; &amp;gt; /etc/resolv.conf&lt;br /&gt;echo nameserver &lt;a href="http://208.67.220.220/"&gt;208.67.220.220&lt;/a&gt; &amp;gt;&amp;gt; /etc/resolv.conf&lt;br /&gt;&lt;br /&gt;當然, 你可以熟悉 FreeRunner 的設定後, 套用到 FreeRunner 的&lt;br /&gt;&lt;br /&gt;/etc/network/interfaces 裡面.&lt;br /&gt;&lt;br /&gt;[Android Cupcake 0.1.1 and after]&lt;br /&gt;PC side:&lt;br /&gt;&lt;br /&gt;iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24&lt;br /&gt;sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;&lt;br /&gt;FR side:&lt;br /&gt;route add default gw 192.168.0.200 dev usb0&lt;br /&gt;setprop net.dns1 168.95.1.1&lt;br /&gt;&lt;br /&gt;[Wi-Fi 連線]&lt;br /&gt;&lt;br /&gt;目前 FreeRunner 的 Wi-Fi Atheros AR6001 module 是透過 SDIO 介面連接 (所以如果你需要 Samsung 的 SDIO host controller code 可以參考 OM 的 implement, OM 的 implement 基本上是 based on OpenHand 的 Samuel 的 implement), 所以並不需要做 power on/off 的動作就可以使用模組. Wi-Fi 連線設定的關鍵, 主要在兩種連線加密模式 WEP 跟 WPA 的設定.&lt;br /&gt;&lt;br /&gt;更多的資料可以參考: &lt;a href="http://wiki.openmoko.org/wiki/Neo_FreeRunner_Wifi"&gt;http://wiki.openmoko.org/wiki/Neo_FreeRunner_Wifi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;* WEP&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 1&amp;gt;&lt;br /&gt;&lt;br /&gt;登入 GTA02 後, 先看附近有哪些無線 AP&lt;br /&gt;&lt;br /&gt;iwlist eth0 scan&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 2&amp;gt;&lt;br /&gt;&lt;br /&gt;Key 欄位填入連接網路 AP 的 key&lt;br /&gt;Essid 填入網路的 AP 名字 (essid)&lt;br /&gt;&lt;br /&gt;iwconfig eth0 key 1234567890 essid myAP&lt;br /&gt;ifdown eth0 &amp;amp;&amp;amp; ifup eth0&lt;br /&gt;udhcpc&lt;br /&gt;&lt;br /&gt;最後一行指令是利用 udhcpc 動態取得 DHCP 的位址&lt;br /&gt;&lt;br /&gt;* WPA&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 1&amp;gt; 建立 WPA 設定檔&lt;br /&gt;&lt;/div&gt;&lt;div&gt;利用 vi 或其他文字編輯程式, 建立如下設定檔&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;ctrl_interface=/var/run/wpa_supplicant&lt;br /&gt;ctrl_interface_group=0&lt;br /&gt;eapol_version=1&lt;br /&gt;ap_scan=1&lt;br /&gt;fast_reauth=1&lt;br /&gt;&lt;br /&gt;# WPA2:&lt;br /&gt;&lt;br /&gt;network={&lt;br /&gt;ssid="WPA2_AP_Name"&lt;br /&gt;scan_ssid=1&lt;br /&gt;proto=RSN&lt;br /&gt;key_mgmt=WPA-PSK&lt;br /&gt;pairwise=CCMP TKIP&lt;br /&gt;group=TKIP CCMP&lt;br /&gt;psk="YourPSK"&lt;br /&gt;priority=50&lt;br /&gt;} &lt;/div&gt;&lt;div&gt;&lt;br /&gt;# WPA:&lt;br /&gt;network={&lt;br /&gt;ssid="WPA_AP_Name"&lt;br /&gt;proto=WPA&lt;br /&gt;key_mgmt=WPA-PSK&lt;br /&gt;pairwise=TKIP&lt;br /&gt;group=TKIP&lt;br /&gt;scan_ssid=1&lt;br /&gt;psk="YourSPK"&lt;br /&gt;priority=10&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# WEP:&lt;br /&gt;network={&lt;br /&gt;ssid="WEP_AP_Name"&lt;br /&gt;scan_ssid=1&lt;br /&gt;key_mgmt=NONE&lt;br /&gt;wep_tx_keyidx=0&lt;br /&gt;wep_key0="your WEP key"&lt;br /&gt;priority=8&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div&gt;# Open:&lt;br /&gt;network={&lt;br /&gt;ssid=""&lt;br /&gt;key_mgmt=NONE&lt;br /&gt;priority=5&lt;br /&gt;}&lt;br /&gt;-------&lt;br /&gt;&amp;lt;Step 2&amp;gt; 套用 WPA 設定檔, 重新啟動&lt;br /&gt;&lt;br /&gt;wpa_supplicant -i eth0 -c /home/root/wpa_supplicant.conf -B&lt;br /&gt;ifup eth0&lt;br /&gt;&lt;br /&gt;如果無法連上, 可以試試 ifdown eth0 再試試.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;連上後, 可以 ping &lt;a href="http://www.hinet.net/"&gt;http://www.hinet.net/&lt;/a&gt; 或是 168.95.1.1 看看是否 DNS 跟網路的連線都 ok 了.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8890540553446923904?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8890540553446923904/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8890540553446923904' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8890540553446923904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8890540553446923904'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/11/neo-freerunner-3-freerunner-usbwi-fi.html' title='Neo FreeRunner 新手手冊 (3) 建立 FreeRunner 對外網路連線 - USB/Wi-Fi'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_y3T3s33suM8/SS0sxwywXiI/AAAAAAAAAMI/iLEEmmbMQXw/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8434981014967784845</id><published>2008-11-25T20:50:00.001-08:00</published><updated>2008-12-02T01:01:48.273-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (2) 登入 FreeRunner 終端機及安裝/更新套件</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5272826122359501090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; CURSOR: hand; HEIGHT: 31px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/SSzXa_GjcSI/AAAAAAAAAMA/OSOwBxW2g6g/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;FreeRunner 基本上有兩種終端機 (Terminal) 模式, 分別是 u-boot 時的 UART 終端機模式以及開機完成後, 可以透過 FreeRunner 預設的 SSH server 連進 FreeRunner. 基本上直接用 Linux (或是 vmware 上的 Linux) 的系統做這些連線比較簡單, 只要直接連上就可以直接從 /dev/ttyACM0 或是 ifconfig 看到 USB0. Windows 則需要裝另外的 RNDIS gadget 驅動程式 .inf 檔案. 接下來會針對這幾種方式說明.&lt;br /&gt;&lt;br /&gt;Neo 還有一個 debug board (上面還有一顆蠻神奇的 FTDI 晶片), 可以透過主板上的 debug port (UART/JTAG) 對 Neo 做低階除錯動作. 在此先略過.&lt;br /&gt;&lt;br /&gt;[U-Boot 終端機]&lt;br /&gt;&lt;br /&gt;U-Boot 的終端機是典型的 UART terminal, NOR flash 跟 NAND flash 裡面的 u-boot 預設的輸出導向都是 USB tty. U-boot 終端機可以用來做一些低階的 register 開關或設定動作. 或是像是重設開機環境變數之類. 相關的資料可以從:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/U-boot"&gt;http://wiki.openmoko.org/wiki/U-boot&lt;/a&gt; 找到. 以 NOR u-boot 來說, 開機時按下 Aux 鍵, 再按下開機鈕, 畫面會停在 u-boot 上. 此時連接 FreeRunner 及手機上的 USB 接頭, 應該可以在 /dev 下看到 ttyACM0.&lt;br /&gt;&lt;br /&gt;然後可以挑一個習慣的 COM port 公用程式, 像是 minicom 或是圖形的 cutecom. 或是個人常用的 neocon/cu . neocon 可以從&lt;a href="http://svn.openmoko.org/developers/werner/neocon/"&gt;http://svn.openmoko.org/developers/werner/neocon/&lt;/a&gt; 找到.&lt;br /&gt;&lt;br /&gt;連接參數為 115200, N, 8, 1, no hardware flow control&lt;br /&gt;&lt;br /&gt;[用 SSH 連到 Neo]&lt;br /&gt;&lt;br /&gt;FreeRunner 預設的 image 都有 SSH server/client (dropbear), 可以透過 SSH 進到 FreeRunner , 同時可以用 SCP 做一些檔案傳輸的工作. FreeRunner USB 埠預設的&lt;br /&gt;&lt;br /&gt;IP address 是 &lt;a href="http://192.168.0.202/"&gt;192.168.0.202&lt;/a&gt;, netmask 是 &lt;a href="http://255.255.255.0/"&gt;255.255.255.0&lt;/a&gt; 這些設定都可以在FreeRunner /etc/network/interfaces 下修改. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;所以當開機完成後, 連接電腦及 FreeRunner, 然後用 root 帳號登入 &lt;a href="http://192.168.0.202/"&gt;192.168.0.202&lt;/a&gt; (使用 sudo or login as root), 密碼是空白:&lt;br /&gt;&lt;br /&gt;root@ubuntu:~# ifconfig usb0 &lt;a href="http://192.168.0.200/"&gt;192.168.0.200&lt;/a&gt; netmask &lt;a href="http://255.255.255.0/"&gt;255.255.255.0&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:root@ubuntu"&gt;root@ubuntu&lt;/a&gt;:~# ssh &lt;a href="mailto:root@192.168.0.202"&gt;root@192.168.0.202&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:root@192.168.0.202"&gt;root@192.168.0.202&lt;/a&gt;'s password:&lt;br /&gt;&lt;a href="mailto:root@om-gta02"&gt;root@om-gta02&lt;/a&gt;:~#&lt;br /&gt;&lt;br /&gt;然後接下來你就可以下一般的 linux command 及使用 script 了.&lt;br /&gt;&lt;br /&gt;[安裝及更新套件]&lt;br /&gt;&lt;br /&gt;Openmoko 使用源自 ipkg 的 opkg 套件管理系統, 改名的原因有很多, 但是重點是: 基本架構 opkg 跟 ipkg 是很類似的. 如果使用過 yum 或是 apt-get, opkg 的用法也是差不多的. 所以安裝套件有 3 種方式, 一種是將套件檔 xxx.ipk 或 xxx.opk 從網路上下載, 然後手動進終端機畫面後安裝. 第 2 種, 是利用 Neo 本身的 USB/Wi-Fi/Bluetooth 網路功能, 連線後透過終端機進行套件的安裝工作. 或是第 3 種, 網路連線後, 透過 2008.x 上面的 Installer 來進行安裝.&lt;br /&gt;&lt;br /&gt;由於 Openmoko 本身非常具有 "community development" 的特性 ;) 所以套件的相關位址和狀態一直在變化. 最早隨 FreeRunner 出貨的 200804 GTK (有時也被稱為 2007.x 版) 版本, 是無法直接用 opkg update 或是 opkg upgrade 到最新的 Om2008. 9 or later . 建議直接參考其他資料先進行 FreeRunner 更新 image 的動作. 同時 2008.x 也有 release/un-stable/testing 的幾個不同的 tracking. 不同 Tracking 的差別會稍後說明.&lt;br /&gt;&lt;br /&gt;FreeRunner 相關的 opkg feed 設定, 可以在 etc/opkg/ 的 .conf 檔案中找到. opkg 套件管理程式主要的 maintainer 是 tick.&lt;br /&gt;&lt;br /&gt;* 手動安裝&lt;br /&gt;Step 1: 搜尋一下哪裡有提供 neo package 的位址, 或可以從 &lt;a href="http://t0ny.net/openmoko/opkg/samples/"&gt;http://t0ny.net/openmoko/opkg/samples/&lt;/a&gt; 下載 orrery_2.0_arm_2008.8.ipk 然後繼續下面的步驟.&lt;br /&gt;&lt;br /&gt;Step 2: 透過下面的命令連線:&lt;br /&gt;root@tony-ubuntu:~# ifconfig usb0 &lt;a href="http://192.168.0.200/"&gt;192.168.0.200&lt;/a&gt; netmask &lt;a href="http://255.255.255.0/"&gt;255.255.255.0&lt;/a&gt;&lt;br /&gt;root@tony-ubuntu:~# ssh &lt;a href="mailto:root@192.168.0.202"&gt;root@192.168.0.202&lt;/a&gt;&lt;br /&gt;&lt;a href="mailto:root@192.168.0.202"&gt;root@192.168.0.202&lt;/a&gt;'s password:&lt;br /&gt;root@om-gta02:~# scp root@192.168.0.200:~/Desktop/opk/orrery_2.0_arm_2008.8.&lt;br /&gt;ipk root@192.168.0.202:~&lt;br /&gt;WARNING: Ignoring unknown argument '-x'&lt;br /&gt;WARNING: Ignoring unknown argument '-oClearAllForwardings yes'&lt;br /&gt;WARNING: Ignoring unknown argument '-n'&lt;br /&gt;&lt;a href="mailto:root@192.168.0.200"&gt;root@192.168.0.200&lt;/a&gt;'s password:&lt;br /&gt;root@om-gta02:~# ls&lt;br /&gt;&lt;br /&gt;Step 3: 直接利用 opkg install orrery_2.0_arm_2008.8.ipk 安裝套件. 有時套件系統會因為某一些系統行為停掉, 此時你必須使用killall packagekitd 來停掉 opkg 服務再重新進行安裝程序.&lt;br /&gt;&lt;br /&gt;* 透過網路安裝&lt;br /&gt;透過網路連線需要幾個額外的步驟, 建立 USB/wi-fi/Bluetooth 網路連線及設定 Neo 的 DNS 設定. 設定完後, 就可以直接透過 opkg install 安裝. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;root@om-gta02:~#opkg install packagename.opk&lt;br /&gt;&lt;br /&gt;* 透過 UI 上的 Installer 安裝&lt;br /&gt;必須先建立網路連線, 才能透過 Installer 安裝相關的 package. 你必須先到 2008.x 的主畫面中, 選擇 Settings, 然後啟動 wi-fi 並輸入 WPA 密碼. 螢幕小鍵盤的使用方式很 tricky, 你必須在鍵盤右側的黑框上, 上下移動選擇數字或其他特殊符號. 由於 2008.x 的 wi-fi 設定程式有些 bug, 建議參考其他方式確認網路連線後, 再透過 Installer 安裝.&lt;br /&gt;&lt;br /&gt;[移除 package]&lt;br /&gt;移除 package 可以使用 opkg remove package_name , 相關的命令可以用 opkg --help 找到&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8434981014967784845?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8434981014967784845/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8434981014967784845' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8434981014967784845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8434981014967784845'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/11/neo-freerunner-2-freerunner.html' title='Neo FreeRunner 新手手冊 (2) 登入 FreeRunner 終端機及安裝/更新套件'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_y3T3s33suM8/SSzXa_GjcSI/AAAAAAAAAMA/OSOwBxW2g6g/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-5040520121952761503</id><published>2008-11-25T00:27:00.001-08:00</published><updated>2009-04-01T21:26:03.248-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openmoko'/><title type='text'>Neo FreeRunner 新手手冊 (1) 認識 Distribution 及更新 image</title><content type='html'>&lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/"&gt;&lt;img id="BLOGGER_PHOTO_ID_5272510651360286898" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 88px; HEIGHT: 31px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/SSu4gKDLGLI/AAAAAAAAAL4/oKlt1Ns_XGI/s320/88x31_cc_sa_nc.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Neng-Yu Tu (Tony Tu)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[認識 Openmoko 的相關 Distribution]&lt;br /&gt;&lt;br /&gt;通常拿到 Neo 第一件是要學會的就是如何更新手機裡面的image. 目前 Neo 有以下的 image 可供選擇.&lt;br /&gt;&lt;br /&gt;* Om2007.2: 由 Open Hand 主導的使用者介面設計 (work for Intel Moblin now) , 建立在 GTK 的基礎上, image 可以從以下網址找到:&lt;br /&gt;Image: &lt;a href="http://t0ny.net/openmoko/images/200804/"&gt;http://t0ny.net/openmoko/images/200804/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_y3T3s33suM8/ST8_0m-VorI/AAAAAAAAAOo/cEZsdJpCHrE/s1600-h/200804_2.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278007461349270194" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/ST8_0m-VorI/AAAAAAAAAOo/cEZsdJpCHrE/s320/200804_2.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Om2008.x : 這是目前 (2008 年) 還在維護的版本, 基本上是由 open source 版的 QT/X11 加上 raster 的 illum ETK. ETK 提供了自己的圖形介面 API, 還有自己的 python binding.&lt;br /&gt;Image: &lt;a href="http://t0ny.net/openmoko/images/200809/"&gt;http://t0ny.net/openmoko/images/200809/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_y3T3s33suM8/ST8_l0eyZAI/AAAAAAAAAOg/LWzkudVgH3Y/s1600-h/200809_1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278007207276995586" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/ST8_l0eyZAI/AAAAAAAAAOg/LWzkudVgH3Y/s320/200809_1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Android: 根據 Google釋出的原始碼, 由 Sean McNeil 維護的 Neo Android 版本, Beta 4 (RC1) / Cupcake 之前的版本在 FR 上需要一張額外的 uSD 記憶卡 (128 MB 以上).&lt;br /&gt;說明: &lt;a href="http://wiki.openmoko.org/wiki/Android"&gt;http://wiki.openmoko.org/wiki/Android&lt;/a&gt;&lt;br /&gt;Image: &lt;a href="http://t0ny.net/openmoko/images/android/"&gt;http://t0ny.net/openmoko/images/android/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_y3T3s33suM8/ST8_OdHwtRI/AAAAAAAAAOY/POWAMEwpnzk/s1600-h/android_2.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278006805869409554" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_y3T3s33suM8/ST8_OdHwtRI/AAAAAAAAAOY/POWAMEwpnzk/s320/android_2.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* QT extended: Trolltech(a Nokia company now)/Qtopia 維護的版本, 目前到 4.4.x&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/Qtopia_/_Qt_Extended_on_FreeRunner"&gt;http://wiki.openmoko.org/wiki/Qtopia_/_Qt_Extended_on_FreeRunner&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;image: &lt;a href="http://www.qtopia.net/modules/mydownloads/index.php"&gt;http://www.qtopia.net/modules/mydownloads/index.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_y3T3s33suM8/ST8-8AioF7I/AAAAAAAAAOQ/JySN6wuripM/s1600-h/qt_ext_2.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278006488959817650" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/ST8-8AioF7I/AAAAAAAAAOQ/JySN6wuripM/s320/qt_ext_2.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Debian: Debian 社群開發並維護的版本.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://wiki.debian.org/DebianOnFreeRunner"&gt;http://wiki.debian.org/DebianOnFreeRunner&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;* FSO: Mickey 跟 2009 年 openmoko framework 可能方向, 基本上 FSO 是建立在 D-Bus 上的應用程式架構, 透過 python binding 的 toolkit (如 GTK/ETK) 來呈現使用者介面的畫面.&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/OpenmokoFramework"&gt;http://wiki.openmoko.org/wiki/OpenmokoFramework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_y3T3s33suM8/ST8-rR7G0hI/AAAAAAAAAOI/gmaTZ_920uQ/s1600-h/fs0-debian.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278006201568121362" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/ST8-rR7G0hI/AAAAAAAAAOI/gmaTZ_920uQ/s320/fs0-debian.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* SHR 及 FDOM: 基本上是社群上的人自己維護的 image, SHR 主要重點在提供 illum/enlightment 標準介面/畫面以及 tangoGPS 程式. FDOM 目的是解決官方版釋出的 image 裡面的套件不足以供一般的開發需要. 同時省掉需要 opkg install/upgrade 的麻煩. 詳細差別可以參考以下網址:&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/SHR"&gt;http://wiki.openmoko.org/wiki/SHR&lt;/a&gt;&lt;a href="http://shr.bearstech.com/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[SHR] &lt;a href="http://shr.bearstech.com/"&gt;http://shr.bearstech.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_y3T3s33suM8/ST892JETogI/AAAAAAAAAOA/WSBiT_BL4m4/s1600-h/shr_4.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278005288657723906" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/ST892JETogI/AAAAAAAAAOA/WSBiT_BL4m4/s320/shr_4.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[FDOM] &lt;a href="http://www.tuxbrain.com/fdom_en.html"&gt;http://www.tuxbrain.com/fdom_en.html&lt;/a&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_y3T3s33suM8/ST9ALcK_nKI/AAAAAAAAAOw/g_vej6trD-M/s1600-h/fdom_1.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5278007853586554018" style="FLOAT: left; MARGIN: 0pt 10px 10px 0pt; WIDTH: 240px; CURSOR: pointer; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/ST9ALcK_nKI/AAAAAAAAAOw/g_vej6trD-M/s320/fdom_1.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[更新 FreeRunner image 的方法]&lt;br /&gt;&lt;br /&gt;更新 FreeRunner 的 image 有兩種辦法:&lt;br /&gt;&amp;lt;方法 1&amp;gt;&lt;br /&gt;一個是透過 FreeRunner 上面的 USB, 透過 DFU (Device firmware update) 協定及 dfu-util 程式, 然後利用開機進到 kernel 前的 u-boot, 更新 image. 此外, 目前只有 linux 的電腦才能做 DFU update 的工作. 當然如果你用 vmware 之類的 emulator 上跑的 linux 也是可以的, 不過記得連接 FreeRunner 時的程式 focus (視窗) 要是 vmware 的 Linux 才行.&lt;br /&gt;&lt;br /&gt;FreeRunner 的 DFU 是由 Werner 維護開發的, 相關的原始碼在 &lt;a href="http://svn.openmoko.org/trunk/src/host/dfu-util/"&gt;http://svn.openmoko.org/trunk/src/host/dfu-util/&lt;/a&gt; . 更多的資料可以查&lt;br /&gt;&lt;a href="http://wiki.openmoko.org/wiki/Dfu-util"&gt;http://wiki.openmoko.org/wiki/Dfu-util&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;方法 2&amp;gt;&lt;br /&gt;如果你有 micro SD card, 最快的方法是直接把 image copy 到 micro SD card, 然後從 micro SD card 執行 script. 你可以參考以下 script 來做更新 FreeRunner 裡面的 image.&lt;br /&gt;&lt;a href="http://t0ny.net/openmoko/samples/script/dl_finalimg"&gt;http://t0ny.net/openmoko/samples/script/dl_finalimg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[更新 FreeRunner image 的步驟]&lt;br /&gt;&lt;br /&gt;&amp;lt; Step 1&amp;gt;&lt;br /&gt;從上面的連結中下載 dfu-util 的原始碼自行編譯或是 download 已編譯好的套件&lt;br /&gt;&lt;br /&gt;&amp;lt; Step 2&amp;gt;&lt;br /&gt;到 &lt;a href="http://downloads.openmoko.org/releases/"&gt;http://downloads.openmoko.org/releases/&lt;/a&gt; 下載最新的 images, 或從前面的連結中, 找到相關的檔案, 下載到本機上.&lt;br /&gt;&lt;br /&gt;&amp;lt; Step 3&amp;gt;&lt;br /&gt;如果是啟動 NOR boot (先按 Aux 鍵, 再按開機紐), 開機畫面就會停住. 同時此時你可以透過 USB 將 FreeRunner 跟你的 Linux 連起來. 然後就可以用 sudo 或是 root 權限執行 dfu-util 進行升級的動作.&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 4&amp;gt;&lt;br /&gt;&lt;br /&gt;* 更新 rootfs:&lt;br /&gt;./dfu-util -a rootfs -R -D /path/to/openmoko-devel-image.jffs2&lt;br /&gt;OR&lt;br /&gt;./dfu-util -a 6 -R -D /path/to/openmoko-devel-image.jffs2&lt;br /&gt;&lt;br /&gt;* 更新 kernel:&lt;br /&gt;./ dfu-util -a kernel -R -D /path/to/uImage&lt;br /&gt;OR&lt;br /&gt;./ dfu-util -a 3 -R -D /path/to/uImage&lt;br /&gt;&lt;br /&gt;* 更新 bootloader&lt;br /&gt;./dfu-util -a u-boot -R -D /path/to/u-boot.bin&lt;br /&gt;OR&lt;br /&gt;./dfu-util -a 1 -R -D /path/to/u-boot.bin&lt;br /&gt;&lt;br /&gt;* 更新開機 splash image&lt;br /&gt;./dfu-util -a splash -R -D /path/to/splash.gz&lt;br /&gt;OR&lt;br /&gt;./dfu-util -a 4 -R -D /path/to/splash.gz&lt;br /&gt;&lt;br /&gt;* 更新開機參數 (environment variable)&lt;br /&gt;./dfu-util -a u-boot_env -R -D /path/to/env_new&lt;br /&gt;OR&lt;br /&gt;./dfu-util -a 2 -R -D /path/to/env_new&lt;br /&gt;&lt;br /&gt;&amp;lt;Step 5&amp;gt;&lt;br /&gt;&lt;br /&gt;記得檢查 DFU 的結束的訊息, 當進度條結束並不代表更新一定成功. 如果 DFU 一直中斷, 記得檢查 DFU 的參數是不是下錯, 或是 USB cable 是不是沒接好. 如果你是從一般 u-boot (不是從 NOR 的 u-boot) 更新, 可能更新 NAND 裡面的 u-boot 也是一個 方法.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-5040520121952761503?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/5040520121952761503/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=5040520121952761503' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5040520121952761503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/5040520121952761503'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/11/neo-freerunner-1-distribution-image_25.html' title='Neo FreeRunner 新手手冊 (1) 認識 Distribution 及更新 image'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_y3T3s33suM8/SSu4gKDLGLI/AAAAAAAAAL4/oKlt1Ns_XGI/s72-c/88x31_cc_sa_nc.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-9189084191286584737</id><published>2008-11-14T04:24:00.001-08:00</published><updated>2008-11-20T02:00:09.585-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>memorial</title><content type='html'>2008 Nov 14, really a sad day. 2007 Nov 14, a happy day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-9189084191286584737?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/9189084191286584737/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=9189084191286584737' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/9189084191286584737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/9189084191286584737'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/11/memorial.html' title='memorial'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3081667635926453694</id><published>2008-10-29T20:55:00.000-07:00</published><updated>2009-09-23T20:07:22.303-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bike'/><title type='text'>XTC HB3 2009</title><content type='html'>&lt;p class="mobile-photo"&gt;Finally, after 5 weeks of waiting, get my second Giant last week.&lt;br /&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;br /&gt;全部相片請點這 &lt;a href="http://picasaweb.google.com/nengyu.tu/XTCHB32009Model#"&gt;All my XTC HB3 snapshot could click here&lt;/a&gt; :)&lt;br /&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_y3T3s33suM8/SQkvbLWF1qI/AAAAAAAAABo/k-J6rEtXGCk/s1600-h/DSC_0001-731204.JPG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 214px" id="BLOGGER_PHOTO_ID_5262789783507556002" border="0" alt="" src="http://1.bp.blogspot.com/_y3T3s33suM8/SQkvbLWF1qI/AAAAAAAAABo/k-J6rEtXGCk/s320/DSC_0001-731204.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;First ride to Taipei Tamshui is cool, with some Openmoko colleagues, and trip total about 50 Km. I forget bring the sunglass, a little dizzy during whole trip.&lt;br /&gt;&lt;br /&gt;Unfortunately, the bike have few serious _dings_ during first ride. Anyway, I love this bike so far :)&lt;br /&gt;&lt;br /&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_y3T3s33suM8/SQkvbcFZbhI/AAAAAAAAABw/uT99n4V36zQ/s1600-h/DSC_0004-732692.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5262789788000939538" border="0" alt="" src="http://2.bp.blogspot.com/_y3T3s33suM8/SQkvbcFZbhI/AAAAAAAAABw/uT99n4V36zQ/s320/DSC_0004-732692.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3081667635926453694?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3081667635926453694/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3081667635926453694' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3081667635926453694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3081667635926453694'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/10/xtc-hb3-2009.html' title='XTC HB3 2009'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_y3T3s33suM8/SQkvbLWF1qI/AAAAAAAAABo/k-J6rEtXGCk/s72-c/DSC_0001-731204.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-2829224992145317190</id><published>2008-10-22T22:00:00.001-07:00</published><updated>2008-11-20T02:02:49.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>光陽 Racing 的廣告</title><content type='html'>難得最近看到一個覺得有打動自己某個部分的摩托車廣告, 女主角側面還蠻像 Yanzi 感覺. 不過看了一下她本人無名基本資料 &lt;a href="http://www.wretch.cc/mypage/pig2003zoo"&gt;http://www.wretch.cc/mypage/pig2003zoo&lt;/a&gt; 比 Yanzi 本人大隻一些 :) 看 blog 的 title: You are reading my shit. 態度十足, 能力就再看看囉&lt;br /&gt;&lt;br /&gt;另外歌也還不錯聽, 跟廣告畫面一氣呵成, Sunshine state 的歌果然很有 sunshine 的感覺 &lt;a href="http://www.sunshinestate.ca/"&gt;http://www.sunshinestate.ca/&lt;/a&gt; 聲音跟編制都很像 Frente 的風格, 蠻適合校 園的青春大學生的 Tune.&lt;br /&gt;&lt;br /&gt;A Good CF...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-2829224992145317190?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/2829224992145317190/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=2829224992145317190' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2829224992145317190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/2829224992145317190'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/10/racing.html' title='光陽 Racing 的廣告'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8326861489775597146</id><published>2008-08-04T00:30:00.001-07:00</published><updated>2008-11-20T02:03:32.925-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>instant messaging</title><content type='html'>I have 4 different messaging client installed (MSN/Skype/irc/jabber),&lt;br /&gt;now I understand why some people need trillian as IM client. It so&lt;br /&gt;strange even for the same function, still need so many clients and&lt;br /&gt;protocols. It just a waste from dark side, maybe it also represent the&lt;br /&gt;world diverse in the bright side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8326861489775597146?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8326861489775597146/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8326861489775597146' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8326861489775597146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8326861489775597146'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/08/instant-messaging.html' title='instant messaging'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-6928218684217178569</id><published>2008-07-31T03:04:00.001-07:00</published><updated>2008-07-31T03:05:49.156-07:00</updated><title type='text'>ghost is everywhere, always</title><content type='html'>Chinese ghost month will start from tomorrow for 1 lunar month. For Chinese, ghost only could legally out of hell into human world during ghost month. And ghost has another meaning for describe malicious/odd/smart people in Chinese. So, ghost is everywhere, always :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-6928218684217178569?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/6928218684217178569/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=6928218684217178569' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6928218684217178569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/6928218684217178569'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/07/ghost-is-everywhere-always.html' title='ghost is everywhere, always'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-1781895187555364987</id><published>2008-07-28T00:05:00.001-07:00</published><updated>2008-07-28T00:07:49.142-07:00</updated><title type='text'>Jack Black's Tenacious D in The Pick of Destiny</title><content type='html'>I thought school rock could be end of jack black's rock BS :) but Tenacious D in The Pick of Destiny is more hilarious. Nowadays rock n' rolls become a joke even in serious duel with devil (well, at least crossroads has some serious fight, IMO). Maybe next time have some movie do JB vs. JB (Jack Black vs. Jack Butler). &lt;p&gt;Anyway, good job, jack.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-1781895187555364987?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/1781895187555364987/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=1781895187555364987' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1781895187555364987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/1781895187555364987'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/07/jack-blacks-tenacious-d-in-pick-of_28.html' title='Jack Black&apos;s Tenacious D in The Pick of Destiny'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-4953138668396533106</id><published>2008-07-26T09:43:00.001-07:00</published><updated>2008-07-26T09:51:19.771-07:00</updated><title type='text'>Amazing Community</title><content type='html'>Well, since I been accept the &lt;a href="http://www.modernmusician.com/"&gt;modernmusician&lt;/a&gt; music/theory discussion forum moderator few years ago, and now the &lt;a href="http://wiki.openmoko.org/"&gt;openmoko &lt;/a&gt;project. I was so amazed community member's insight of on discussion topic. Some people just could see through things even more clearly than people actual working on things. Just very cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-4953138668396533106?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/4953138668396533106/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=4953138668396533106' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/4953138668396533106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/4953138668396533106'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/07/amazing-community.html' title='Amazing Community'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-8052187151615398154</id><published>2008-07-25T04:59:00.000-07:00</published><updated>2008-07-25T05:03:35.795-07:00</updated><title type='text'>Mail and Post</title><content type='html'>It's first time using mail posting function of blogspot. Posting through&lt;br /&gt;e-mail have strange feel for me, maybe because of the interface remind me the daily work. &lt;p&gt;And I made a mistake at first post, wrong e-mail address... a usual&lt;br /&gt;un-deliverable reason after several times of check on update.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-8052187151615398154?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/8052187151615398154/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=8052187151615398154' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8052187151615398154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/8052187151615398154'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/07/mail-and-post.html' title='Mail and Post'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1371939233663504020.post-3650285267929845976</id><published>2008-07-19T07:55:00.000-07:00</published><updated>2008-12-01T01:58:04.053-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mood'/><title type='text'>重新開始</title><content type='html'>&lt;span style="font-family:verdana;"&gt;這幾年在各個地方 post 了一堆東西, 但是卻沒有一個集中的地方放這些東西. 想一想還是就放在一開始接觸 blog 的 blogspot 吧.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;從脫離學校以來, 一路走來奇奇怪怪. 呵, 從好處想是各式各樣的生活都體驗過了, 應該可以寫一個有趣的 blog.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1371939233663504020-3650285267929845976?l=tony-tu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tony-tu.blogspot.com/feeds/3650285267929845976/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1371939233663504020&amp;postID=3650285267929845976' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3650285267929845976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1371939233663504020/posts/default/3650285267929845976'/><link rel='alternate' type='text/html' href='http://tony-tu.blogspot.com/2008/07/blog-post.html' title='重新開始'/><author><name>neng-yu 'tony' tu</name><uri>http://www.blogger.com/profile/06838505597484366600</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_y3T3s33suM8/SUJTRfZPjJI/AAAAAAAAAPs/m2oyuRTmhL4/S220/tony.png'/></author><thr:total>0</thr:total></entry></feed>
