2012-12-31

網樂通遙控器好用

朋友送的網樂通有兩支遙控器,這下遙控器多了,就拿來遙控電腦吧!

原本給arduino 用的 IRremote library 可以在這裡下載
https://github.com/shirriff/Arduino-IRremote
而msp430 用的energia 也已經內含 IRremote
http://energia.nu/download/

網樂通新、舊這兩支遙控器都是使用NEC protocol, IRremote 裡已有支援,
可以直接解碼出來,兩支有一些鍵同碼,一些鍵不同碼。

參考這個例子
https://github.com/shirriff/Arduino-IRremote/blob/master/examples/IRrecvDump/IRrecvDump.ino
把它寫入msp430 G2553|G2452 (或Arduino) 就可以解網樂通遙控器的碼。

那支長得像Wii 的我稱它做舊式,另一支跟一般電視遙控器相似的我稱它為新式。
舊式多了「扳機」鍵,新式多了方型的「紅、藍、綠、橘」及「加、減、向上、向下」

 舊式  新式
紅鍵 CE941AE5 CE9454AB
藍鍵 CE9402FD CE94D42B
綠鍵 CE9400FF CE9434CB
橘鍵 CE94C03F CE94B44B
上   CE94906F CE9404FB
下   CE94807F CE94847B
左   CE9450AF CE9444BB
右   CE9410EF CE94C43B
扳機 CE9432CD
紅(方)        CE945AA5
藍(方)        CE94BA45
綠(方)        CE94DA25
橘(方)        CE943AC5
加            CE945CA3
減            CE94DC23
向上          CE9452AD
向下          CE94D22D
 
電腦這一端可以用 py-serial module 來建立呼叫動作,搭配 xdotool 就可以控制電腦了。

import os
from serial import Serial
ser = Serial("/dev/ttyACM0", 9600)

while 1:
    L = ser.readline()
    if L[4:8]=='906F' or L[4:8]=='04FB' or L[4:8]=='5CA3':
       os.system('xdotool key Up')
    # 選一個鍵來啟用mouse cursor, 例如 Mute
    elif ..................
    elif L[4:8]=='40BF':
       # 再利用 xdotool getmouselocation 來讀取 mouse cursor 的x, y 值
       X = os.popen('xdotool getmouselocation').read().strip().split()
       mx=int(X[0][2:])
       my=int(X[1][2:])
       N = ser.readline()
       V=15
       if N[4:8]=='FFFF': # 當按住鍵不方時,它會丟出 FFFFFFFF, 就可以利用它來加速
   N='xxxx'+LAST
   V=W*1.5
       if N[4:8]=='906F' or N[4:8]=='04FB':
   os.system('xdotool mousemove %s %s'%(mx, my -V))
   W=V
   LAST=N[4:8]
       elif ...............
       # 當按下紅鍵或藍鍵就中止 mouse cursor
       elif N[4:8]=='54AB' or N[4:8]=='1AE5':
    os.system('xdotool click 1')
   break
    elif L[4:8]=='06F9': # 利用 Search 鍵來輸出數字
       while 1:
   M = ser.readline()
   if M[4:8]=='708F':
      os.system('xdotool key 1')
   elif ............
    # 利用「紅、藍、綠、桶」四個方鍵來搭配輸出英文字母
    elif L[4:8]=='5AA5':
       C = ser.readline()
       if C[4:8]=='F00F': # 數字鍵 2
   os.system('xdotool key a')
       elif C[4:8]=='30CF': # 數字鍵 3
   os.system('xdotool key d')
       elif ...........
    elif L[4:8]=='DA25':
       C = ser.readline()
       if C[4:8]=='F00F':
   os.system('xdotool key b')
       elif C[4:8]=='30CF':
   os.system('xdotool key e')
       elif ........... 
 其他像是可以用 os.system('xdotool key ctrl+Right') 或
os.system('xdotool key ctrl+Left') 來做出按鍵

這裡可以 chmod 666 /dev/ttyACM0 讓一般user 的權限就能遙控

這樣就可以當成鍵盤使用了,不過感覺舊式遙控器比較好按,但新式遙控器鍵比較多。

2012-11-13

MSP430 Launchpad vs Arduino Leonardo

經過一個禮拜以來的使用,感覺Leonardo 還是略勝一籌。

首先是IDE 方面Launchpad用的energia 會有抓不到板子的問題,以致
拖累整個OS, 讓系統hang住,而且相當嚴重。後來改用command line
方式compile 以及upload, 是可以避開IDE 這個問題,不過還不是根本解決。
有時在command line 跟Launchpad 溝通還是不通,要再次插拔。

最後根據 http://www.43oh.com 討論文章去抓另外的 cdcacm 來compile
取代Linux 系統原有的cdc-acm, 情況才有改善。在這裡:
https://github.com/energia/Energia/wiki/Linux-Serial-Communication

再來就是energia 給Linux 的只有32-bit 版本, 無法在64-bit Linux 使用,
為了寫Launchpad 的程式就必須另外跑一套32-bit Linux, 還好有各種Live
Linux system 可用,還不是太大的問題。

arduino 則是32/64 都有提供,IDE 作業時也很穩定的可以抓到板子。

發現另一個問題就是同樣程式碼的一個程式,在兩塊板子表現出來的結果卻
不一樣。我遇到的是自己寫的一個Morse 程式,它可以從電腦傳送「字串」
給這兩塊板子,讓它轉換成人耳可聽的電報碼,在使用tone 這個函數時
tone(x, y, z); delay(n); 
'z' 跟 'n' 關係人耳的感覺,Leonardo 很快就調好比例,但是Launchpad
調很久聽起來還是不順,我指的不是音調而是節拍,沒調好的話對聽得懂
電報碼的人來說,會覺得是一種困擾。

這同時又發現Launchpad 在接收指令方面有問題, 就是第一次送出指令後,
Launchpad 沒有動作, 例如我送出 "green blink" 是要它閃綠色LED, 但是
要在送第二次時才會閃,之後比這串指令短的指令是沒問題,但是比這串字
更長的指令,在第一次傳送時一樣又是沒有反應動作,要傳第二次才會動。

Leonardo 則是很誠實的有指令來,不分長短,送來就有動作!很穩定。

Launchpad 不曉得會不會還有什麼其他類似的潛在問題?

Leonardo 還有一個好處,就是只需插上USB, 就有3.3V及5V兩種電源輸出,
Launchpad只有3.3V, 有一些SSRelay 最低需求是4V 以上電源,這時用Leonardo
就不需額外的電源。

看來如果要做一些比較重要的工作,可能還是用Leonardo 比較方便可靠。

不過Launchpad 有一些方便的地方,像是onboard 紅、綠各一粒LED, 而
Leonardo 只有一粒黃色LED(User可定義的), Launchpad 也比Leonardo 多
一粒按鍵可以自行定義。

然而Launchpad 的LED 很刺眼,反觀Leonardo 的LED 顏色柔和。

最後就外觀的工藝來看,Leonardo 在藍色板面上用白色點標示Analog pin,
而在白色背面上也標示出Analog pin, Launchpad 背面什麼都沒標。

Leonardo 看起來乾乾淨淨的,Launchpad 板子上可以看到一些像是膠或是
漆的黏著物,感覺有點髒髒的,我想畢竟Leonardo是Made in Italy 而不
是Made in China 吧!

2012-11-05

MSP430 Launchpad 俗擱大碗

之前有玩過ARM SBC 上面的DIO/AIO, 最近玩MK802一陣子後就覺得不太
好玩了,因為它沒有任何I/O 可以與別的東西互動,壹電視網樂通也是同樣
的問題,網樂通的好處是可以藉由lirc 用遙控器指揮它,但也僅限於此,無法
再與其它週邊連結。

最先想到是找USB GPIO 來裝,小小一支隨插隨用,網路上看到大約20 美元,
有了I/O 透過SSR(繼電器)就可以控制像是電扇,電燈等家電的開關。

後來又想到今年很紅的Raspberry Pi, 露拍售價是NT$1850, 它除了像MK802
一樣可以跑正常Linux 之外,還有GPIO 可用,而且有豐富的python 支援,
確實是個好物,甚至劍橋大學都開了搭配Raspberry Pi 的電腦課程,任何人
都可以透過網路修課,更可貴的是512M RAM 的Rev B 可是道地
"Made in the UK" 英國貨,連貴參參的Apple產品相較之下都變得很粗俗
(Apple 產品都是 Made in China 吧?)。

只是想到它跟MK802 的重疊性太高,於是轉向己經流行多年的義大利國寶
Arduino(沒錯!就像Raspberry Pi 是英國國寶一樣,Arduino 可是Made in Italy)
,像較新款的Leonardo 大約台弊八百多,它的好處是流行多年累積的資源
很多,加上arduino IDE 的方便讓不會寫C 的人也能輕鬆入門。

Arduino 不只是software open source, 它連硬體都是open source, 甚至可以
按圖施工,自己生產Arduino, 因此也有很多所謂百分之百相容的clone, 看來
如果手上沒有英國國寶,至少也該擁有一隻義大利國寶才對,光就它的
"Made in Italy" 拿在手上也會自我感覺良好吧!

不過最後殺出來一個德州之寶, TI 的 MSP430 Launchpad, 這東西會不會被
義大利黑手黨追殺呀?它顯然是衝著Arduino 來的,產品定位幾乎跟Arduino
一樣,都是微控開發板,最殺的是它價格低到像用送的一樣,四塊多美元,
上網訂購也不收運費,露拍大約NT$160。包裝裡附USB線、再送一粒主控
晶片、兩個10pin 母座、一粒水晶振蕩,弄得好像你不買就對不起德州佬。

起初以為這東西一定要會玩C 才有辦法上手,沒想到由於arduino IDE 是
open source software , 竟然有人己經把它port 過來給Launchpad 用,名字
叫做energia, 有些 arduino 的程式甚至不必改什麼就可以透過energia 讓它
在Launchpad 上面跑。

聽說它內建的展示程式就是展示板子上內建的溫度感測器,可惜我拿到時
第一時間試不出來,就試用energia 別的sample 把展示程式蓋掉了,之後
也找不到溫度感測的sample 於是參考範例語法自己DIY, 只用了簡單幾行
就能動了!
const int tempSen = TEMPSENSOR;
int sensRead = 0;

void setup(){
  pinMode(tempSen, INPUT);
  Serial.begin(9600);
}

void loop(){
  if (Serial.available()){
    sensRead = analogRead(tempSen);
    Serial.println(sensRead);
    delay(3000);
  }
}

成功之後插拔一下Launchpad ,再開個terminal 指定
port /dev/ttyACM0 9600 baud 就可以讀到三位數的數值,這兩天天氣的
氣溫讀到的大約在三百上下。

以今天日落後室外大概不到24度,讀到的數值是296, 297, 室內還不到27度
,讀到 的數值約302, 303。推測它是以流經某一粒二極體的電流,但還沒
找出正確對應的 換算公式。

2012-10-12

諾貝爾獎 幹射中國內政

長久以來,每次諾貝爾獎預計或正式頒給中國人,中國政府就像潑婦罵街一樣的
跳出來,不斷大罵這是「粗暴幹射中國內政」。

好像一個有嚴重精神病的男人,一天到晚懷疑自己的女人被別的男人幹射,一天
到晚要對別的男人叫囂,任何男人看他女人一眼,都是「粗暴幹射我的女人」。

終於,今年由中國人莫言獲得諾貝爾文學獎,中國政府一反常態,不再靠腰
「歪果仁幹射中國內政」,很快就把這則新聞在中央電視台報導出來,這反
倒不免讓人懷疑起中國政府是不是用了什麼貞操套,把全國人民都套起來了?
不然怎麼一夕之間不怕再被歪果仁幹射?

原來莫言的作品對中國政府一切違反人權的作為都採取「閉嘴」,難怪一得獎,
中國政府態度一反常態。

不曉得下一次又有中國人得諾貝爾獎時,中國政府會不會又再反今次的態度而
高叫頒獎是「粗暴幹射中國內政」?

===後續===
果然又看到新聞報導,莫言這個人,如下
1.莫言(本名管謨業)為共產黨員,也是官方作家協會副主席。
2. 艾未未昨重批:「莫言會一直站在權力那邊。」

2012-10-11

蘋果要倒了,網樂通改機

蘋果集團因為壹電視因為被NCC 官僚刁難很久,加上有線系統業界的各種利益
阻撓,燒了很多錢之後,黎光頭受不了,於是台灣這棵蘋果樹要倒了。

在可以預期的未來,滿街都是林益世!

蘋果媒體之所以能爆出林益世貪污案,不是這個媒體特別有能力,而是蘋果的
老闆黎智英是外國人。
如果蘋果的老闆是台灣人,像林益世這種案子一定被壓下來,不會報。

所有台灣現有的媒體都是有相當程度的政商關係,就算有人拿到像林益世這種
案子的證據,交到媒體,在老闆的考量下終必丟進馬桶沖掉。

蘋果倒了,第一高興的是那些貪官污吏!再也不會出事了!
(看來蘋果要倒了,2559 也會很高興,因為到時候沒人爆料,直接無罪釋放了)

蘋果倒了,第二高興的是手上有網樂通機上盒的人了!

原本網樂通規定你不可以亂玩這個盒子,不然到時候他們可能向你索賠3000元
,這個小盒子絕對值不到3000元,所以不要跟錢過不去,要玩去買支像是MK802
或Raspberry Pi 或beagleboard 什麼的。

現在蘋果要倒了,他們也寄出信函說這台小機機不用還,所以大家來給它開開機吧!

照著網路上的教學想改機,卻遇到問題,就是按住reset 再插power 後完全找
不到機子的IP 可以telnet 進去,所以這一步是行不通的。

看到教學說要自行接UART出來以debug的方式進行改機,這好像有點麻煩,其實
在拆開機盒後,把那一粒8G USB DOM拆下來,可以看見它有四支腳,而且都有
標示+5V, GND, DP(data plus), DM(data minus), 這四腳都是母孔位,只要接
線到麵包板再拉線到工作的電腦USB 插座,當一般USB 隨身碟處理就可以改裡面 
的內容了。

fdisk -l /dev/sdb 可以看到

Disk /dev/sdb: 8027 MB, 8027897856 bytes
160 heads, 19 sectors/track, 5157 cylinders, total 15679488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
   /dev/sdb1              19      617119      308550+  83  Linux
   /dev/sdb2          617120     1234239      308560   83  Linux
   /dev/sdb3         1234240    13819839     6292800   83  Linux
   /dev/sdb4        13819840    15622559      901360   83  Linux

mount 之後可以看到四個partitions 都是ext3 格式。

2012-10-01

用shell script 寫個輸入法

最近使用mk802 一開始是遇到microSD 速度的問題, 以致在量稍微大一點的寫入時,
會把系統檔案弄亂, 所以先不裝Xorg.

因為用debootstrap 做出來的初步系統不大, 要裝Xorg 的話會depend 很多檔案, 在
apt-get 進行安裝時會從幾十到上百MB, 這在Class 4 卡上面就會出亂子(屨試不爽).

另方面也是MK802 只能以framebuffer 方式跑 xserver-xorg-video-fbdev, 但是
framebuffer 之下的效率是不好的, 所以不如只用text mode 回到石器時代體驗
另一種人生 XD (要說我自虐也可以啦).

由於自己compile 的kernel 有支援fbcon, 因此只要跑fbterm 就可以顯示CJK,
這樣在沒有Xorg 環境的石器時代下, 己經可以有效閱讀漢字了, 就算只能用w3m 的
web-browser 也能夠收發gmail, 所以原始人在text mode 下也可以跟現代人通訊,
也能生存了, 只差最後一里路, 就是漢字的輸入法.

目前現成的漢字輸入法能用於UTF 環境的只有ucimf, 但是試了一下debian 裡的ucimf,
才打幾個字就crash 掉, 幾乎等同不能用, 這樣好像非裝Xorg 不可.

一開始想是不是可以從現有輸入法的table(xxxx.cin)裡, grep漢字的拆碼, 瀘出所要
的漢字出來再copy/paste, 不過這樣的人力耗費實在太多, 之後查閱tmux 的用法時,
發現它支援buffer copy/paste, 就是說可以利用tmux 來自動化.

tmux 幾乎可以說在text mode 下屬於必用的軟體, 這樣只要藉由tmux 的config 來
搭配grep 輸入法table 所產出的字串, 就可以自動把漢字copy/paste 到目的區,
這樣跟使用現成的漢字輸入法軟體幾乎相同.

開始試著寫一個shell script 來達到這個目的, 經過幾天慢慢修改, 終於完成與現有
Xorg 環境下輸入法主要功能相同的功能, 例如可以切換輸入法(注音table 還未完成)
以及可以打正出簡(只要用正體字的拆碼就可以打出簡體字).

S=輸入的一長串漢字的拆碼(英文字母中間有空白分隔,就像一般打倉頡那樣的打法)
  (例如:onf aj ym sbn ymy nn ene(你早上刷卡了沒))
for i in $S; do
   k=$(grep ^"$i " $CJKtable)
   if [ ${#k} -gt 0 ]; then # 這是有grep 出漢字
      j=$(echo -n $k|sed -e "s/$i //g" -e 's/ />/g')
      if [ ${#j} -gt 2 ]; then  # 如果grep 出超過一個以上的漢字
         再提示選字,再剪出所要的字
     echo -n $j; read J
     SELECT=$(echo -n $j|cut -d'>' -f $J)
     STR="${STR}$SELECT"
      else  # 只瀘出一個漢字的話
         就以grep 出來的漢字
   else
      如果沒有grep 出漢字, 那它就將原字串貼出(例如漢英混打)

最後將泣出的漢字整句推進buffer 裡
echo -n "$STR"|tmux loadb -
再藉由tmux 自動貼到目標區
tmux paste-buffer -t top-left

這裡其實還有稍微要施工的就是輸入法的table, 讓同碼字減少.

致於Ctrl-space 的切換鍵就由tmux config 來定義
bind-key -n C-Space select-pane -l

而tmux 工作區要切出像是一大塊跟一小塊
bind-key -n F1 run \
"tmux split-window -v -p 9 ; tmux split-window -h -p 40; tmux select-pane -U"
(右下側區塊留做其它用途)

這樣一個沒有Xorg 環境的Linux 幾乎像一部悍馬車, 可以在各種地型行駛,
如果用在server(大都沒裝Xorg 吧?) 也是很方便的.

其實在framebuffer 環境下(就是沒跑fbterm 的環境), 利用w3m-img 就可以顯示
網頁裡的圖片, 原始人過的生活也不是太原始啦!!

2012-09-17

MK802 之MicroSD 的速度問題

之前用過標準SD卡做Linux filesystem 插到Android 之下跑chroot 沒什麼問題
,沒想到這次在MK802 用MicroSD 跑native Linux竟然一直出問題,在猜是速
度限制造成的。

今天終於去買了一塊class 10的MicroSD來試,結果好太多了,也證實先前的
猜測是對的。

之前手上只有class 4, 一旦寫入多一些,例如install一些packages, 裝完之後整
個file system就亂掉,拔下來拿到別台電腦上fsck,會在 /lost+found 下面有
百個以上(或幾百個?)的檔案,這實要手動復原的話太累了,乾脆重新dd一次。

這樣的情況也導致根本沒辦法做debootstrap 的second stage, 因為每做必爛掉!

看過網路上一些比較數據,似乎class 4 也不會太差,但我遇到的情況卻是不
堪用,應該也不是品牌問題,手上class 4 的卡分別是Sandisk及Kingston 都
一樣會亂掉,今天買的class 10 雖然是不同牌的 Apacer,用起來穩穩的,但
我想應該品牌原因不高。

上篇文章裡提到已經做好kernel/uboot, 只要再跟root filesystem 組合就可以
在MK802 上面跑 native Linux, 網路上已有現成的for MK802 的linux, 但都是
Ubuntu based, 我想做一個Debian wheezy based, 前面幾天都卡在class 4 的
速度不夠以至 deboostrap 的second stage 無法完成,剛好看到小狗板那邊
有人做了一個很basic 的wheezy, 所以先拿來用,其實自己用debootstrap 做
出來也就是那樣子,它也是公開供人下載的,
http://elinux.org/BeagleBoardDebian 。

我make 的kernel 支援fbcon, 原來只要利用 fbterm 就可以在text console 下
顯示漢字,於是我也把自己修訂過的 Droid Sans Fallback 加進去,這樣用
w3m 也可以瀏覽各種CJK網頁,而且在 text console 下執行 fbterm 也可以
設定字體大小,指令像是:
    fbterm -n "Dejavu Sans Mono" -s 14
指定 Mono 在console 裡才不會字體重疊,當它遇到有CJK字時,就會去找
同樣是Sans 的 Droid Sans Fallback 來補位,這樣在閱讀漢字是沒問題,差
的只是不能打出漢字。

試用了一下之後發現用w3m 可以login gmail 讀取信件。

2012-09-14

MK802 desktop and kernel 3.0.42

從Raspbery Pi開頭之後,最近好玩的小玩具越來越多,也越來越多山寨,
MK802就是近來頗受歡迎的ARM pc, 它的體積大約是10x3x1 公分, 內建
Android ISC, 直接插到有HDMI 的電視就可以玩。

有關MK802 II 可以參考
http://www.rikomagic.co.uk/forum/viewtopic.php?f=2&t=305

這是中國生產的ARM device, 在youtube 上看過紀錄片似乎是一家很簡陋
類似家庭工廠所生產,或許這樣才能cost down 吧?在露天拍賣的售價
從1550 到兩千多(加其它週邊)都有人賣,它有分一代機、二代機,外觀
不同。

最近剛拿到二代機,一開始用就覺得它實在有些燙,所以乾脆把外殼拆
掉,再貼一塊散熱片在CPU上,但如果就這樣用,散熱片摸起來還是燙燙
的,所以最後就加一個小風扇吹它。



不過我買MK802主要不是跑Android, 而是想跑「正常」的linux 當desktop
,用了幾天的初步結論是實驗性大於實用性!

首先因為它的RAM是燒死的1GB, 不像x86架構可以由user自行加減,所以
當desktop用會有RAM 不足的情形,目前1GB的RAM最多只能用到大約830MB
(當server用的話最多可以用到899372 kB), 其餘被GPU還有不知道什麼
吃掉了,就算不載入mali 相關modules 或是在boot command 加上
"mem=1024M" 它還是無法完全用到1024MB。

其次是解析度,目前能用的就只有1280x720(720p) 或1920x1080(1080p)
兩種可選, 而且是透過boot.scr 來控制, 不是user 在進入linux 環境
後可以改變的,不像在x86 環境可以依螢幕實際解析度來調整。

再來是storage的速度,MK802 要跑「正常」linux的話就是插入一個裝
著「正常」linux的microSD, 目前手邊只有class 4, 在多次使用經驗
中filesystem 常常出現亂掉的問題,懷疑是class 4 速度太慢的原因,
不曉得用class 10會不會好很多?

目前網路上找得到的for MK802 的linux 就是linaro, miniand 以及改
自miniand 的rikomagic 等三個版本, 它們的kernel 對週邊設備支援
太少, 所以我自己clone kernel source 回來make, 換掉原本的舊kernel.

https://docs.google.com/open?id=0ByM1ckIZtYRMZVRZWWhNd0JBZ2M

它是經由 git clone 抓了一些 https://github.com/amery/ 之下相關的
東西回來自行 make, kernel 是 3.0.42. 內容包含 kernel, modules, firmware,
bootloader, 用來換掉那幾個版本裡原本的 3.0.36 kernel.

現在可以使用的包括USB ethernet, USB sound card, USB GPS, 也加上網路
最基本該有的netfilter(for iptables)支援,有興趣的朋友可以下載來替換。

目前我做的這個kernel 已知的問題(但原因不明)包括:
1. OTG 沒有如期生效, 我確定make 裡的選項有選了
2. USB webcam 未能生效, (也是選項有選)
3. RAM 看到(/proc/meminfo) 只有 801440 kB
  (相較於 miniand 3.0.36 kernel的 834036 kB 要少了三十幾 MB)

試了各種boot command, 最後得到 mem=928M 是黃金交叉點, 可以用到約800M RAM.

就算 boot command 告訴它 mem=1024M 的話, 開機後還是只能看到
899372 kB RAM, 但螢幕完全不能用, 不過可以當server 用, 由遠端login 操作.

注意:
使用本人包的kernel/uboot 替換之前,請先確認你做好備份, 本人
不負任何損害責任.

2012-07-31

Android root最後一里路, 以及 OTG

對於已經能經由 adb 連進手機並且有root權限的人,卻受困於從手機本身的terminal
無法執行 su, 就算系統裡都已經有 su 了, 它還是會告訴你 permission denied 或像是 
uid xxxxx is not allowed to su, 因此很多事不能做, 包括chroot, 真是令人不爽。

這最後一里路就差兩樣東西,我們可以到 http://androidsu.com/superuser/ 下載
Superuser-x.x.x-arm-signed.zip 回來解開只拿其中的 Superuser.apk 以及 su
, 分別把Superuser.apk 丟到 /system/app/ 以及把 su 丟到 /system/bin/
當然要先 remount /system/ 成可讀寫,然後 chmod 06755 /system/bin/su

如果系統裡已有別的 su 版本,也順便把它 rm 掉, 裝好後先關掉你原先開啟的 terminal
再重跑一次(不必重開機),這樣從手機本身開啟 terminal 或像是 irssi-connectBot
就可以執行su 然後做愛做的事了。個人是推薦 irssi-connectBot, 它俱有像是 Ctrl, Alt,
Esc 等等按鍵的功能。

這個 Superuser-xxxx 從 Froyo 到 ICS 都適用。那個網站還同時提供 x86 版本,如果
玩 x86 Android 有需要的話也可以抓來 su 一下。


關於 OTG 接頭

之前在光華商場一帶買了一支包裝上寫著 OTG USB 接頭(一頭microUSB 一頭標準USB,
NT$60)回來,結果不能用!

後來在露拍又買了一支(NT$30),終於可以用。差別在 microUSB 那一端的第四腳(ID)
跟第五腳(GND)有沒有短路,沒有短路的只能當 microUSB 轉標準USB 轉接頭(可以讓
adb工作沒問題),有短路的才能讓 OTG 當 host 用,可以連接鍵盤、老鼠、外接碟、
HUB 等等。

方便的話最好在購買的當場用三用電錶量一下,確認哪支腳是開路還是短路,但是
microUSB 腳很細,因此電錶的探針需要綁上像是大頭針之類的很細的金屬,標準
USB 那一端最好也插一片紙來絕緣它的外框,這樣才能順利量測。

2012-07-22

MSN是最便利的VPN

說來很簡單,不過在孤狗上找了半天好像都沒找到現成、可用的,因此
要自己動手做。

簡單來說:
1. VPN的目的是讓我們能從遠端(防火牆外)進入在防火牆內的主機
2. MSN的目的是讓我們毫無阻隔的傳送訊息(主要為文字)到天崖海角

把兩者組合起來,只要防火牆沒擋MSN的話,我們就可以透過MSN把指令
傳到天崖海角的主機裡,從某個角度來看這要比VPN還low cost很多!因為
完全沒有架設成本,無需動到任何網路設定,就讓我們有手指直接按在遠端
主機鍵盤上相同的效果。

適合用MSN來指揮的就是接受指令的環境,那麼Linux便是首選啦!

這樣,不管是單一方或雙方都在防火牆的內部,一樣可以遙控對方。

工作邏輯就是MSN client在收到某種字串(message)時,可以傳送給
某個外部程式(也就是作業系統裡的程式、軟體),然後將執行的結果
回傳給送訊過來那一端,這樣就達到遙控的目的了。

其中當然還要建立allow list,只允許某些對象進行遙控,或進一步將
對象分級,各用各的權限,不能被大家亂玩。

說到這裡,只要將『被控端』準備好,『主控端』可以用任何現成的MSN軟體。

但是這裡還牽涉到加密的問題,因為MSN的message是不加密的明文(字串)
,因此你傳送的所有內容是可以輕易的被中途任何人讀取,特別是有關
主機上的東西被讀取總是不好的,除非你的主機完全沒有任何安全考量,
因此還是要幫message加密。

工作方式便是送、收雙方各持有一個相同的key,送出之前把message加上key
來進行加密運算,然後送出。收到message的一方則根據key將收到的內容還原
成一般文字。這裡又牽涉到傳送的問題,因為文字經過用各種加密演算出來後,
可能會變binary,而MSN message主要是傳送『文字』,於是我們要再把它以
另外的演算(如base64)轉換成text才能當成一般message由MSN送出。

這樣藉由MSN做一來一往的遙控便大功告成了。

2012-06-26

荷蘭電台(RNW)要關門了

不是每天聽,只是三不五時聽聽,今天在聽一個「觀火員」的故事之後,忽然聽到荷蘭
電台要關閉了!(觀火員是一個人住在50呎高塔上觀看一望無際的森林,警戒哪裡有火災,
每年七八月他就放假,因為雨季不會有火災)

在眾多國際廣播裡,荷蘭電台(RNW -- Radio Netherland Worldwide)是我評定為
第一名的電台,理由是「內容豐富、多樣化」又是24小時不停(我只聽得懂他們的英語廣播)。

眾多國際廣播當然包括BBC, VOA, NHK這幾個「大」電台,但是RNW探觸的內容最為
廣泛,甚至無所禁忌(這是相對於偽善的中華文化而言),這是連我評定為「第二名」的
BBC都比不上的,至於其他電台(國際廣播)基本上是為國家宣傳機器,有趣的內容相當
有限。

早年收聽各國廣播當然只有透過短波,近年來才用網路。短波要看電離層狀況、看環境
能否架設足夠大的天線等等,收聽不一定能如意。網路只要插上電源、網線就能清晰收聽
,實在好太多了。

在「數大就是美」的愚民教育下,很多台灣人總把「台灣這麼小」當成口頭禪,以一種
很瞧不起的眼光來看台灣。做為前荷蘭殖民地的台灣,大家應該多去瞭解荷蘭這個國家,
這個土地跟台灣差不多(比台灣大一點點),人口比台灣少的國家,曾經那樣重要的影響過
全世界,而我們竟然對它那麼無知!

RNW的廣播已經65年了,收台的最主要原因是政府大砍預算,21世紀已經不再是用巨艦大
炮征服世界的時代,但是只要投資這樣一個電台就可以相當程度的影響世界,為何不做呢?
可惜我不是荷蘭公民,不然一定要去關心一下政府!

2012-06-01

自製顯眼的 xterm cursor

長期以來就有著這個困擾,就是在桌面的時候滑鼠指標很顯眼,一旦滑鼠移進
terminal(任何一種X window 下的terminal emulator)範圍,它就變成一條很
細小像英文字 I 的東西,這在古時候螢幕都是1024x768的時代大概不是太大
的問題,可是現在螢幕很多都是 1920x1200, 如果不動一下滑鼠根本看不出它
現在在哪裡?甚至在搖動滑鼠時,也會因為terminal 裡復雜的結構,依然看
不出cursor 在哪裡!

不曉得當初為什麼會把進入terminal 範圍的滑鼠icon 設計成那麼不顯眼?

這個「始祖設計」的基因也一直被延續下來,到 http://gnome-look.org
X11 mouse theme 找一下,很多現代設計出來的 xterm icon 幾乎都繼承古時
候設計的概念,把它弄得又細又小很不顯眼。

其實也不用辛苦的去找別人設計好又是顯眼的icon, 只要自己用像是gimp來
畫一個大的、有色彩的顯眼icon 然後再轉換一下.

建一個 xterm.in 內容僅一行,為
32 2 2 my-xterm.png 1000
(32 是指這個png 為32x32
2 2 是指當滑鼠按下去時作用點在這個png 的 X, Y 座標
最好根據你實際png 圖來決定 X, Y
後面那個 1000 是延遲時間, 不太需要改)

轉換指令為
xcursorgen xterm.in xterm
把產出的 xterm cp 到 /usr/share/icons/XXXXX/cursors/xterm 取代掉即可,
這個 XXXXX 在大多數系統可能是 DMZ-White, 你可以先查一下.

為什麼要看xterm裡的 cursor ? 因為有時可能要 mark 一段文字或者去按一
個URL link,這時如果能一眼看到cursor 馬上推移滑鼠是最方便的,若還要
用肉眼去尋找或是要先搖一搖滑鼠就太麻煩了。

特別是現在螢幕大,我們可以用諸如 terminator 或在其它terminal 裡用
tmux/dvtm 等等來切割工作視窗,也就是一個terminal 裡有好幾個terminal
,這時有個顯眼的cursor icon 才方便。

2012-05-16

conky奇怪的bug

這幾天在用conky時發現它在系統剛啟動後的前幾分鐘內(不確定多久),無法
正常執行,一直出現Segmentation fault。

當然有懷疑是不是該程式本身的問題,但是,在過了幾分鐘後又可以正常執行,
所以還是不要懷疑人家,先檢查自己的設定。於是試著呼叫conky本身帶來的
/etc/conky/conky.conf
這個並不會出現Seg. fault (但是太醜了), 然而只要呼叫我自己的 .conkyrc  
就一定會Seg. fault

接著把 .conkyrc 裡呼叫我自己的 python 那一段拿掉, 這樣又不會Seg. fault
看起來好像python script的問題?可是單獨執行python script 卻沒有問題,
它會輸出一段包含conky 控制碼的文字。這問題到底在哪裡?

好吧!最後還是換個版本看看,從原本1.8.1 換成1.9.0 而原有的 .conkyrc 跟
python script 都不動。

結果正常!

繞了一大圈,其間還懷疑是不是 Xauthority 或 xserver 造成的?一一
試過,都無法解決問題。

結論是,有時候還是要懷疑官方程式是問題來源!

抓個圖來獻一下寶,它會在螢幕左下角顯示系統狀況跟天氣資訊



看了 changelog 後發現原來是當conky 以execi/execpi 來呼叫外部程式時, 如果
interval 大於開機的 uptime 就會有問題,我的interval 是480秒, 也就是說在
開機後480秒內就註定會Seg. faul, 但過了這段時間又會正常,這才會讓人摸不
著問題在哪裡呀!

2012-03-28

當納粹黨強拆猶太人房子的時候

當納粹黨強拆猶太人房子的時候
你會怎樣?

http://katinkr.wordpress.com/2012/03/17/

http://www.coolloud.org.tw/node/67503


德國著名牧師Martin Niemöller的話

當納粹黨來抓猶太人的時候,
我沒有站出來為他們說話,
因為我不是猶太人。

當納粹黨來抓工會的人的時候,
我沒有站出來為他們說話,
因為我不是工會的人。

當納粹黨來抓天主教徒的時候,
我沒有站出來為他們說話,
因為我是基督徒,不是天主教徒。

當納粹黨來抓我的時候,
已經沒有人為我站出來說話,
因為他們都被抓走了。

2012-02-23

好用的天文軟體 astro tools

之前拍攝南極老人星時還沒發現這款軟體,發現後使用才知道它比
孤狗星圖(Google SkyMap)強多了!

astro tools 可以在此下載:
http://www.1mobile.com/astro-tools-169986.html



它內建的星空資料有25萬顆SAO星,可以另外下載二百五十萬顆星
http://www.astroraf.com/download/
下載 dbraf.db 大約 170MB,放到 /sdcard/astrotools/ 之下

孤狗星圖只有赤經赤緯,沒有地平方位角、仰角,在astro tools
裡有類似戰鬥機駕駛艙的HUD(抬頭顯示器),可以知道螢幕中央位置的
角度(如圖11.7度),左側有條綠色垂直線是地平方向角170度。


按了右上角十字型圖示後,還可以顯示更多星星,是拍攝星星比對的好幫手。
(這是使用雙螢幕手機所以可以同時跑兩個軟體,上半是astro tools,下半是
孤狗星圖,孤狗星圖的好處是幾個大星星有中文名字, astro tools 全是英文)


點一下你想查的星,會在左上角顯示資料,這顆是SAO 234480
也就是 http://en.wikipedia.org/wiki/Canopus 老人星, 它的亮度 -0.9,
赤經赤緯, 方位角、仰角, 以及通過子午圈(天空中從正北0延伸到正南180這條
虛擬的線)的時間(觀測者本地時間20點7分)
(全天最亮的恆星天狼星Sirius, SAO 151881 亮度是 -1.61)

再對它點兩下,註示資料會消失
按T字圖示可以切換文字註示(不過沒顯示老人星Canopus, 但有顯示是屬於Carina 星座)

按右邊往左數第三個圖示,可以切換赤經赤緯或地面方位角仰角

按右邊往左數第四個圖示,可以切換日或夜間模示

按最左圖示可以切換sensor或手動模式

相較之下astro tools 算是大人玩具,而孤狗星圖只是小學生的玩具吧!
如果只是用肉眼看星星的話,用孤狗星圖就足夠了。

2012-01-17

光害明亮的市區也能看到南極老人


南極老人Canopus在光害明亮的市區也看得到,更可以用傻瓜相機拍下來。
不過要切換成手動模式,才能控制曝光跟快門,由於傻瓜相機不能接軟線
來減少按快門時的震動,所以要用倒數自拍的功能。
(請點取圖片,放大後對照它們的位置)
對照一下恆星圖可以看到其他的恆星,以下圖片產生自
http://www.fourmilab.ch/yoursky/

2012-01-15

從「我們贏了」到「這一切都是美好的」

那個無能的男人高喊「我們贏了!」,以多出八十萬票、立委席次過
半,確定可以為所欲為的再蠻幹四年「我什麼都不知道」的總統。

沒錯,「我們贏了!」,不只無能男人贏了,坐私人飛機助選的大老
闆也贏了!賣手機的大老闆也贏了!他(她)們都贏了!

就算南方朔明指「無能更甚於污腐」,就算有六百零九萬台灣人不支
持他、不相信他、指責他,他還是可以不必反省,繼續政商勾結、繼
續跟大資本家互通有無、繼續放任馬友友們兩天2.3億元的一再揮豁
台灣人民的納稅錢。

套一句他最愛掛在嘴上的一句話「會選舉不等於會治國」,這句話不
也正是這個無能男人的最佳寫照嗎?

最難以理解、最可悲的是那六百八十幾萬人完全不在意讓一個無能的
人來揮豁國家,讓台灣繼續空轉四年!那群人只在意兩千三百萬人裡
極少數坐私人飛機助選的跟賣手機的大老闆能賺錢。

(才貼完文章,就看到這篇
美僑胞見馬未稱總統 郭台銘火大拍桌
http://tw.nextmedia.com/realtimenews/article/business/20120115/106009

以後媒體要恭恭敬敬尊稱
殿前帶刀護馬鎮民平妖斬敵郭大將軍
)
也許那六百八十幾萬人心中嚮往的是北韓,因為它是最「安定」的國
家,只要有個「神」供奉在神桌上,就覺得很「安定」,所以管他再
汙腐無能也永遠要支持他,政治對那群人來說是一種信仰,不是邏輯
思考和判斷。

說到這裡,很想問問台灣基督長老教會的朋友們「你真的相信宇宙間
有一個公義的上帝」嗎?以這次的選舉來看,上帝完全不在意什麼公
義不是嗎?上帝如果在意公義,會讓幾百萬猶太人被納粹屠殺嗎?上
帝如果在意公義會安排文化大革命來整死幾千萬人嗎?上帝如果在意
公義會安排這麼一個無能的人來揮豁台灣八年嗎?

說到這又得提那個賣手機的,她不也是把整個公司教會化,也號稱基
督教徒不是嗎?她的公義的上帝在選前兩天特別要她跳出替那個無能
的男人一手拿92無鉛汽油一手拿打火機,照南方朔的論點就是「用北
京來嚇唬台灣人民,堂堂大老闆成了『恐懼販子』」。賣手機那個人
的上帝跟高俊明牧師的上帝到底是不是同一個上帝?也都是公義的上
帝嗎?

我可能比較願意相信「上帝看這一切都是美好的」,納粹殺人跟猶太
人被殺都是美好的,找來那個無能的男人要揮豁台灣八年也是美好的
,財富快速集中到社會上極少數大老闆手裡也是美好的,許多人被裁
員、失業更是美好的。

好吧,我相信………這一切都是美好的!

2012-01-12

大師忽然覺醒了?

被稱為「大師」的南方朔陣前倒戈,跳出來寫「這次大選 我為何挺蔡不挺馬」,
這的確對那個無能的男人重重的揮了一拳!

文中提到

「……馬的確不是個對社會有深切關懷、對知識有博雅認知的領導人。他
祇是懂得在既有結構中鑽縫隙搞點小權謀的普通靈巧型政治人物。他缺乏一個政
治領導人最重要的核心價值………

南韓的汽車等都已成了世界頂級企業。但與李明博同時上任的馬政府在自主發展
上毫無成績,台灣過度仰賴大陸市場,已擴大台灣的空洞化,就業條件、工作機
會加速減少………

一個堂堂元首要談的應該是國家及人民的願景,而馬團隊談來談去就是扁案及影
射,要不然就是用北京來嚇唬台灣人民,堂堂領導人而成了『恐懼販子』……」

只是,我好奇的想問大師,為什麼現在才跳出來?
那個人『執政無能又亂搞』難道是今天才這樣嗎?那個無能的男人在台北市長八
年任內,早就把台北市搞翻天,把『無能』兩字赤裸裸的展現無遺了!

還是大師以往只閱讀聯合報、中國時報?最近開始看別的媒體,所以忽然覺醒?

總之大師總算悟出「無能更甚於貪腐」這一針見血的重點了!
台灣人加油,別再讓無能的男人一再誤國了!