MacBook 小 bug

自從有一次用耳機聽了 MacBook 裡面的音樂之後, MacBook 就只能從耳機聽到聲音, 拔掉耳機後, 就再也發不出聲音. 但插回耳機就又好了. 如果企圖去調整畫面上方的音量圖示, 它只會出現喇叭禁止的符號.

上網查了一下, 這個問題還頗常見. 各家眾說紛紜, 有的說要重開機, 有的說要換主機板, 也有教人家從 terminal 去改 script. 其實每一招都不靈!唯一正確的解法是 MacUKnow 上 clhhouse 的那篇. 只要拿個細長的東西, 插進耳機孔按一 (幾) 下就好了. 歪解就是不斷插拔耳機插頭, 運氣好就會被偵測到拔出.

原因是這個耳機孔有 jack detection, 但是有時耳機插頭只能被偵測到插入, 沒辦法被偵測到拔出, 所以 Mac 一直認為還插著耳機, 故不讓使用者調整喇叭的音量, 而且還因此沒辦法發出任何聲音!

確認這個問題的特徵是: 此時耳機孔會發出紅光. 如果看到紅光, 就可以確認是這個問題. 


P8Z68V-Pro 超頻小註解

我用這塊華碩的主機板差不多快一個月了, 基本上它表現良好, 前陣子都沒為它操過什麼心.

不過今天下午開始, 很多東西都不對了. 播 3D 的時候忽然花屏. 我想說是不是安裝什麼軟體動到 driver 了?! 所以就把 driver 換到最新. 又把新安裝的迅雷, Tonido 等等都解除安裝, 結果沒有什麼改善.

我又想會不會是 DirectX 被改壞了? 不過用 Windows 的使用者體驗分數去跑, 和以前都一樣, 並沒有變低分. 況且 DirectX 還很難倒退版本, 只好先不管它. 至少一般畫面都還正常.

無奈到了晚上, 連播影片都怪怪的, 電影中出現紫色的橫條紋, 並且出現一個顯示卡停止回應的警告訊息. 上網 Google 了一下, 有人說這是 Windows 電源管理所導致的, 把省電模式改為 “費電模式“, 呃…高效能模式, 它就會給繪圖卡比較多的電, 避開忽然卡住的問題. 雖然我照著改了, 依然沒有效果. 此時腦海中甚至浮現出 “重灌" 這個可怕的單字!

最後怎麼解決的呢? 我想如果卡沒問題, driver 沒問題, 電流沒問題, 搞不好是記憶體的問題. 上次裝機時, 我順便把 P8Z68V-Pro 這塊主機板上的自動超頻打開了. 說不定它自我感覺良好地超到跑不動的地方去了吧?! 果然我把機殼拆開, 把那兩顆開關關掉, 一切就恢復正常了! 也許關掉 TPU 就行, 不過我為了省事就全關了.

至於那些一直解不了 “顯示卡停止回應" 的網友, 我建議各位就降頻保平安吧!

[華碩 P8Z68V-Pro 開關位置圖]

TPU = 自動系統最佳化

EPU = 智慧型電源監控

美國專利 7269829 號 – 好奇怪

在 survey 專利時, 忽然找到這一篇. 如果這個有專利, 那…很多人都可能陸續被告吧!?

United States Patent 7,269,829 Smith , et al. September 11, 2007

Method and system for remote update of microprocessor code for irrigation controllers

Abstract A remote download of microprocessor code for an irrigation controller is provided. A microprocessor, on an irrigation controller, is executing program code (in volatile memory) and receives a remote download of updated program code, which it stores into non-volatile random access memory, e.g., flash memory. The microprocessor is configured to receive the updated program code, via a communication port, and to store the updated program code into the non-volatile flash memory. Optionally, the updated program code is received at multiple controllers via a global transmission on a communication bus. The microprocessor receives a communication causing it to re-start. In response to the re-start communication, the microprocessor fetches the updated program code stored in the non-volatile flash memory into the program memory RAM to replace the original program code, and begins execution of the updated program code in the program memory RAM. A device is also provided for directing the download of program code to irrigation controllers. Options provide for global download of entirely new program code, global and/or individual download of particular pages of updated program code, and global downloads to controllers grouped by communication speed.

經過 Google 翻譯後, 變成:

提供遠程灌溉控制器的微處理器代碼下載。一個灌溉控制器上的微處理器,正在執行的程序代碼(揮發性記憶體)和接收的遠程下載更新的程序代碼,它存儲到非易失性隨機存取記憶體,例如,快閃記憶體。微處理器配置為接收更新的程序代碼,通過一個通信端口,並儲存到非揮發性快閃記憶體更新的程序代碼。或者,更新的程序代碼是收到多個控制器通過全球通信總線傳輸。微處理器接收到的溝通,導致它重新啟動。在重新啟動通信,微處理器獲取更新的程序代碼存儲到程序存儲器 RAM非易失性的閃存中,以取代原程序代碼,並開始執行更新的程序代碼在程序存儲器 RAM。還提供了指導程序代碼下載到灌溉控制器的設備。選項提供全球全新的程序代碼下載,全球和/或個人下載更新的程序代碼的特定頁面,和分組通信速度控制器的全球下載。

——

這麼說來, 如果目標不是限於 "灌溉控制器", 那麼所有的網路 upgrade 不就都包含進去了.

既然這樣可以有專利, 多媒體裝置的升級也可以申請專利嗎?好奇怪的概念, 竟然還是這幾年通過的…

NaCl 小註解

有一部安潔莉娜裘莉主演的動作片 SALT 正在電視上重播, 原本我看到 SALT 就只會想到鹽, 現在又多了一個聯想. 而前陣子看到的 NaCl 則是另外一個.

NaCl 不就是鹽巴嗎?嗯, 只怪老外喜歡搞頭字語,  NaCl = Na + Cl = Native Client. 不過 NaCl 這個詞太基本了, 不用 NaCl + Native Client 幾乎 Google 不到它技術名詞的這個版本. 換言之, 不知道它原來的意思就 Google 不到, 這真是太有趣了.

NaCl 是由 Google 提出的技術, 類似 Microsoft 的 ActiveX, 使得瀏覽器 (的 Client) 能夠直接執行一些機器碼 (Native) 來加速. 大家還記得 ActiveX 有時是病毒偽裝而成的, 所以瀏覽器只得常常跳出一個視窗來問我們是否允許執行這個 ActiveX.

NaCl 的作法是採用固定長度的指令集, 比方說只用 16 或 32 bits 長度的指令, 不是這個長度的指令就不准用. 這樣一來,  短短的 b (branch) 或是其他控制流程的指令就不合 NaCl 的規則, 而無法被執行. 在 CISC 指令集中只採用類似 RISC 的指令, 當然會拖慢執行的效率. 不過據說影響不太大. 畢竟 Native 表示該電腦的機器碼, 本來就比較快. 

此外, NaCl 刻意選用記憶體區段的方法, 把 NaCl 的程式碼侷限在一塊獨立的記憶體中運行, 就像用 Visual Studio debug code 一樣, 在沙盒 (or 沙盆, 原文是sand box)中怎麼玩, 都不會影響到主記憶體的行為. 這也是防毒軟體常用的技術, 把某個有嫌疑的程式放到沙盒裡面執行看看, 如果它有不軌的行為, 就可以判斷它是病毒.

至於為何叫做 sand box 技術, 令人不得不聯想到貓咪. 貓咪只會在沙盆裡面便便, 具有隔離的效果, 哈!

[Ref]

1. http://zh.wikipedia.org/wiki/Google_Native_Client

SIMPLE 有 Simple 嗎?

今天看到一個沒見過的 spec. 叫做 SIMPLE (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions), 名字真是隨人取的啊!那麼它真的簡單嗎?

首先來解析 IM (Instant Message),  大家可能天天都在用的 MSN, QQ, Yahoo Messenger, Skype, ICQ 都是 IM. 這個即使不懂原理也知道它是什麼.

再來是 SIP (Session Initiation Protocol), SIP 和比較早的 H.323 一樣, 都是 VoIP 最主要的信令協議 (signaling protocol). 什麼是信令呢?舉例來說, 打電話時, 連接到局端就是透過信令, 接通電話是信令, 掛斷電話也是信令. 它是一些控制訊號的組合.

SIP 的特色原來是希望簡單, 所以雖然模仿 SS7 實現了許多撥號, 發話, 振鈴,…的功能, 但是只支持點對點的通訊.

說到 SS7, 不由得又回想起 15 年前讀博士班的時候, 我們在 CTI 這門課的 team project 實作了一個電話訪問程式. 它會透過電腦 + 一張卡自動播號到竹軒 (交大女生宿舍)做電話訪問. 同學搞笑說十題裡面一定要問有沒有男朋友, 結果女生幾乎都有回答這一題, 讓大家很有成就感!

Presence 顧名思義就是 "存在". SIMPLE 不只是包括 IM, 它還管對方是否存在?例如 MSN 中, 我們可以看到對方 "離開", 也可以看到對方有視訊或是麥克風設備的存在, 這些都統包在 presence 一詞當中.

那 LE 呢?我私下認為那是用來湊數的. 不然只能叫做 SIMP 不是有點遜嗎?當然是得拼個常用的單字囉! 比方說我要開個 "退職螃蟹聯誼會", 我也會取個 REtired CRabs U and I Together 之類的嘛!

[REF]

1. SIMPLE

2. 會話發起協議

3. 即時通訊

4. SS7