2012年10月23日 星期二

raspberry pi 樹莓派介紹

Raspberry Pi 是 arm 平台信用卡大小的電腦,由英國的 Raspberry Pi Foundation 開發。

一開始是創辦人們看到學校竟然在教Word、Excel,有感於現代孩童不再親手「做」東西,接觸的都是圖形化介面、遊戲機,加上現在年輕人越來越不懂得怎麼寫程 式,於是,想找回學習電腦運算與程式設計的樂趣,特別是帶回校園中,致力推廣資訊科學與相關知識,所以打造出這台超便宜、性能卻不差的電腦。


硬體上分 model A 及 model B 二種:

Model A: 25美金,記憶體 256M,1個 usb 2.0 port,電源 300 mA (1.5 W)
Model B: 35美金,記憶體 512M,2個 usb 2.0 port,電源 700 mA (3.5 W),10/100 乙太網路卡(RJ45)

其他部份就二者都相同:

CPU: 700 MHz ARM1176JZF-S core (armv6)
GPU: 可播藍光 DVD 及 h264 1080p 影片
視訊輸出: 1個 AV 端子及 1個 HDMI 接頭
音效: 透過 HDMI 或 3.5mm 音源輸出
儲存空間: SD / MMC / SDIO 卡
重量: 45克
官方支援 OS: Fedora,Arch linux,Debian

其他非官方也有一堆 linux 支援 Raspberry Pi,但是不支援 ubuntu,因為 Raspberry Pi 是 ARMv6 cpu,而 ubuntu 早就捨棄 v6 的支援。

GPU 等級和 XBox 一代的效能差不多,整體效能約等於一台 300MHz Pentium 2,但是卻包含很不錯的顯示卡。

一定要有記憶卡才能開機。
舊版 256M ram 是 cpu 及 gpu 共享, 可以調配 240/16, 224/32, 192/64, 128/128

arm128_start.elf : 128M ARM, 128M GPU split (use this for heavy 3D work, possibly also required for some video decoding)
arm192_start.elf : 192M ARM, 64M GPU split (this is the default)
arm224_start.elf : 224M ARM, 32M GPU split (use this for Linux only with no 3D or video processing. Its enough for the 1080p framebuffer, but not much else)
arm240_start.elf : 240M ARM, 16M GPU split (use this for headless mode only. It is enough to boot the system, but you can not use video at all.


如何在未安裝 OS 前分辨 model B 記憶體是 256M 或 512M:
就是位於AV端子與HDMI之間的那顆晶片(那是CPU和記憶體的位置)(整個板子的正中央那顆),記憶體是堆疊在CPU上方,你要看的就是在廠牌下面那行字,字上面是 "2G" (表示2Gbits = 256MB) 還是 "4G" (表示 4Gbits = 512MB)。



開機過程滿有趣的,開機後,gpu 先起來,從 vfat 中載入 firmware,再叫起 arm cpu,開始進入開機程序。

1 - gpu loads its firmware from sdcard
2 - gpu then fires up the arm
3 - arm loads its kernel from sdcard and starts runing.

基本上,能應用的層面相當廣,因為耗電量才 3.5W,當成 HTPC, NAS 都很適合。


這邊介紹裝上官方 raspbian 步驟及要注意事項:

到官方網站下載:
http://www.raspberrypi.org/downloads

這一個 rasbian
http://downloads.raspberrypi.org/images/raspbian/2012-09-18-wheezy-raspbian/2012-09-18-wheezy-raspbian.zip

準備好一張記 2G 以上的記憶卡 ,將抓回來的檔案解開後 dd 到記憶卡上。建議用快一點的記憶卡,因為我的 2G 沒 class 的,連 apt-get update 都要滿久的。

假設記憶卡在 /dev/sdb

$ unzip 2012-09-18-wheezy-raspbian.zip
$ sudo dd if=2012-09-18-wheezy-raspbian.img of=/dev/sdb bs=512k
記得設定  bs,否則預設 blocksize 是 512 bytes, 會 d 很久。

完成後,用 fdisk -l /dev/sdb 可看到二個 partition,第一個是 vfat 格式,放 kernel 及 firmware,第二個為 ext4,才是 rasbian 檔案系統。

/dev/sdb1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/sdb2          122880     3932159     1904640   83  Linux


$ sudo mount /dev/sdb1 /mnt
$ cd /mnt
$ view config.txt

將 sdb1 掛載起來,裡面有一個 config.txt,可設定一些參數:
- 一些 hdmi 的微調
- 電視的規格 pal or ntsc,預設為 ntsc,台灣的是 ntsc 因此不用調整
- 要不要超頻,預設為 700 MHz,可在這裡調整

建議一開始先不要做調整,等到都能正常使用了,再回頭來做微調。



至於 cpu 及 gpu 共享記憶體的配置,可以從這裡設定:(建議從後面 raspi-config 設定)


240/16:
$ sudo cp -p arm240_start.elf start.elf

224/32:
$ sudo cp -p arm224_start.elf start.elf

以此列推,至於512M 可能要再等一陣子吧。


$ cd /
$ sudo umount /mnt

將記憶卡插到 Raspberry Pi 中即可,網路線也要,再將 micro usb 電源線接上就會開機,要關機就拔電源線即可(若在 os 中要先 shutdown)。


預設 rasbian 是 dhcp 方式,而且 sshd 是開啟的,因此,若接到有 dhcp server 的地方,直接就會取得 ip,然後可 ssh 進入,根本不用電視或螢幕,之前測試失敗,是自己耍白癡,dhcp server 的 firewall 沒開放 dhcp 封包給 Raspberry Pi 連。

看 dhcp server 上的 log 或使用 nmap 來掃描看看 raspberry pi 取得哪個 ip,直接登入即可。

user:           pi
password:  raspberry

記得,一進去就要立刻修改密碼,否則很危險。

若是無法以 ssh 登入,只要插上螢幕或電視,外加 usb 鍵盤,從本機操作。
本機接鍵盤、螢幕或電視登入,有些鍵會不同,如 | ,因為預設是英國的鍵盤,可從選單上修改。

要再次進入設定選單,指令為:
$ sudo raspi-config

預設 raspbian 的 pi 使用者,sudo 可以不用密碼執行任何指令。
裡面已經裝好 X 環境了(lxde 搭配 openbox),可從 raspi-config 來設定開機自動進入 X。


raspi-config 選單各項功能:

expend_root:
首先做 expend_rootfs,因為下載回來的 rasbian 檔案系統是 1.9G,如果用 4G 的記憶卡來 dd,開機後看到的也只有 1.9G,所以要做 resize 動作,填滿整個 4G。

overscan:
預設不用動,如果顯示器旁邊有不明 黑色邊框,才需要調整,參考 /boot/config.txt

configure_keyboard:
由此調整鍵盤配置為美國的

change_timezone:
預設是英國的時區,改成 Asia/Taipei (會將 /usr/share/zoneinfo/Asia/Taipei 拷貝成 /etc/localtime)

memory_split:
cpu 及 gpu 記憶體配置

overclock:
超頻,預設 700MHz

boot_behaviour:
是否開機直接進入 X(是否啟動 lightdm),採用 lightdm 來自動登入

update:
更新 raspi-config 程式


由於 Raspberry Pi 沒有 real time clock (RTC),所以時間是透過 ntpd 取得,等了一陣子時間都沒自動調整,建議第一次手動設定時間。
$ sudo date -s "2012-10-23 21:07:22"

記憶卡2G 真的不夠用,開機後僅賸下 400M,還好可外接 usb storage。

若是二個 usb 插槽不夠用,可外接 usb hub (建議用有外接電源的種類)

倒是建議配合 synergy,這樣就不用再接 usb keyboard.

預設 raspbian 是使用 swapfile 位於 /var/swap

由於是 swapfile,因此要開關 swap 不要用 swapon,改用 dphys-swapfile 來切換。

先介紹到這,因為其他的和一般的 debian 沒二樣,改天有學到新柬西再繼續分享。



2012/10/24 目前要使用全部 512M 的記憶體,要抓新版 firmware 回來,作法如下:
最新版 firmware 下載位置

https://github.com/raspberrypi/firmware/tree/master/boot


抓回除了 COPYING.Linux  及 LICENSE.broadcom 以外的 8個檔放到 sd card 的第一個分割區中(/boot),覆蓋掉原本的檔案。
接著修改 config.txt 加上:
gpu_mem=32
存檔後重開機即可,開好後就會有 480/32 的記憶體配置


也可以使用 gpu_mem_percent 代表

gpu_mem_percent=25
gpu_mem=16



第一行表示用 gpu 用 25% 的記憶體 (128M), 但是還有第二行,所以再加 16M,共 144M


新的記憶體配置方法參考

http://www.raspberrypi.org/phpBB3/viewtopic.php?t=20642&p=200624





相關連結:

官方網頁:
http://www.raspberrypi.org/

官方論譠:

http://www.raspberrypi.org/phpBB3/


FAQ:
http://www.raspberrypi.org/faqs

打雷神之鎚3 也很順:
http://www.raspberrypi.org/archives/106

製造啤酒也可以:
http://forum.talkonly.net/viewthread.php?tid=15049

可裝各種作業系統:
http://elinux.org/RPi_Distributions

監控你的 Raspberry Pi:
http://raspcontrol.com/

免費雜誌 MagPi magazine
http://www.themagpi.com/

重編 Raspberry Pi 核心: (也有 cross compilation 說明)
http://elinux.org/RPi_Kernel_Compilation
最好是在 desktop 或 notebook 上來 cross compilation,這樣比較快

在 Raspberry 上開發程式:
http://elinux.org/RPi_Programming

免費線上課程:
http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/


raspihub:
http://www.raspihub.com/

玩家:
http://ruten-proteus.blogspot.tw/


參考資料:
http://elinux.org/RaspberryPiBoard
http://en.wikipedia.org/wiki/Raspberry_Pi
http://yehnan.blogspot.tw/2012/01/raspberry-pi.html

2012年10月20日 星期六

在 debian wheezy 中使用玉山銀行網路 ATM

由於有時會臨時要查看郵局或銀行餘額,看看錢有沒有進來,還要跑 ATM 去查很麻煩,因此,還是用網路銀行的 ATM 最快最方便。
但是,目前能在 linux 上使用的網路 ATM 不多,最有名的是玉山銀行,現在好像連第一銀行都可以了,但是只有 32 位元才行的樣子,沒試過就是。
這邊是以玉山銀行網路 ATM 來試。

首先裝上讀卡機驅動程式:
$ sudo apt-get install pcscd libccid

由於我的讀卡機是 EZ100PU,預設 libccid 裡並不支援,不過還好,廠商那裡有支援,所以直接到廠商那抓回來加到系統中。
http://www.castech.com.tw/in-download-02.aspx?cid=C_00000001&id=P_00000001
抓回來檔名是 20118101553170555.zip

接下來要注意,位子不要放錯了,放錯就會抓不到。

建立好目錄
$ sudo mkdir -p /usr/lib/pcsc/drivers/EZ100usb.bundle/Contents/Linux

將抓回來的驅動程式解開,只取 Info.plist 及 ezusb.so
分別放到:
/usr/lib/pcsc/drivers/EZ100usb.bundle/Contents/Info.plist
/usr/lib/pcsc/drivers/EZ100usb.bundle/Contents/Linux/ezusb.so

做法如下:
$ mkdir /tmp/tempdir
$ unzip 20118101553170555.zip -d /tmp/tempdir/
$ cd /tmp/tempdir/EZUSB_Linux/


我的系統是 64 位元的,解開 x86_64 這個
$ unzip EZUSB_Linux_x86_64_v1.5.3.zip
$ cd EZUSB_Linux_x86_64_v1.5.3/driver_ezusb_v1.5.3_for_64_bit/drivers/
$ sudo install -o root -g root -m 644 Info.plist /usr/lib/pcsc/drivers/EZ100usb.bundle/Contents/
$ sudo install -o root -g root -m 644 ezusb.so /usr/lib/pcsc/drivers/EZ100usb.bundle/Contents/Linux/



就定位後,重新啟動 pcscd
$ sudo /etc/init.d/pcscd restart


將讀卡機插到 usb,用指令檢查:
$ sudo apt-get install pcsc-tools
$ pcsc_scan
    PC/SC device scanner
    V 1.4.20 (c) 2001-2011, Ludovic Rousseau
    Compiled with PC/SC lite version: 1.8.3
    Using reader plug'n play mechanism
    Scanning present readers...
    0: CASTLES EZ100PU 00 00

    Fri Oct 19 15:53:19 2012
    Reader 0: CASTLES EZ100PU 00 00
      Card state: Card removed,



有抓到 CASTLES EZ100PU
顯示目前沒插晶片卡

若是抓不到,將讀卡機 usb 拔出再插回去應該就抓得到。


再無法解決的話,從 pcscd 來做 debug,先將 pcscd 停止
$ sudo /etc/init.d/pcscd stop

手動執行 pcscd 來除錯
$ sudo pcscd -f -d
    05866446 hotplug_libudev.c:260:get_driver() Looking for a driver for VID: 0x0CA6, PID: 0x0010, path: /dev/bus/usb/007/012
    00000038 hotplug_libudev.c:311:HPAddDevice() Adding USB device: CASTLES EZ100PU
    00000093 readerfactory.c:941:RFInitializeReader() Attempting startup of CASTLES EZ100PU 00 00 using /usr/lib/pcsc/drivers/EZ100usb.bundle/Contents/Linux/ezusb.so
    00000141 readerfactory.c:831:RFBindFunctions() Loading IFD Handler 3.0
    00145722 readerfactory.c:294:RFAddReader() Using the pcscd polling thread
將讀卡機拔出 usb 再插回去,如果有看到以上 esusb.so,就是有抓到,否則回去檢查看看位置是否有放錯。


讀卡機正確驅動後,開啟玉山銀行網路 ATM
https://netbank.esunbank.com.tw/webatm/
先安裝 WebATM plugin,裝好重新啟動 firefox

about:plugins 可看到底下訊息即安裝完成

E.Sun Bank WebATM plug-in 1.0.4.3

File: libnpWebATM.so
Version:
Plug-in for E.Sun Bank WebATM 1.0.4.3
MIME Type Description Suffixes
application/ESB-WebATM-plugin ESun Bank WebATM Plug-in .esb


https://netbank.esunbank.com.tw/webatm/
再次開啟網路 ATM 網頁,左上角 "請選擇讀卡機" 應該可以看到讀卡機
直接在 "請輸入晶片卡密碼" 輸入你的晶片卡的密碼,再按登入即可。

若有問題,可參考以下連結
https://netbank.esunbank.com.tw/webatm/Q&A_016.htm