2012年10月26日 星期五

窮人的 Java Bluetooth 開發環境之建置

窮人的 Java Bluetooth 開發環境之建置


Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

請勿轉貼
看其他教材

  1. Log:
    1. 文件草稿始於 08/27/2004.
    2. Updated on 08/12/2005.
  2. 動機: 前一段時間對於手機藍芽程式的開發產生興趣, 可是又沒有很多經費,又希望開發的藍芽程式能以 Java 為主,但是又不想因為 只是想試試看而大費周章重新切割自己的硬碟,所以開始到處尋尋覓覓。 經過蠻曲折的過程,決定將開發環境設定為最精簡的 Knoppix(可以利用 光碟開機成 Linux 而不須對現有的磁碟進行分割,並且只需要一個 FAT/FAT32 的分割區就可以把需要安裝的程式放進去), Bluez (內建在 Linux Kernel 的藍芽驅動程式), 以及 Rococosoft's Impronto Developer Kit for Linux(經過註冊可以免費下載,這個開發工具 提供一個軟體層使得符合 JABWT 的 Java APIs 能與底層的 Bluez 驅動 程式溝通)。如此一來,除了藍芽裝置以外,幾乎不需要花太多的錢 就可以擁有一個 Java 的藍芽開發環境。
  3. 現況: 對很多人來說,Linux 是一個遙不可及的作業系統, 他們只有在 Windows 的環境下才覺得舒服。這裡要提供一個好消息,從 Windows XP SP2 之後,XP 系統有了自己的 Bluetooth 的驅動程式(類似 Linux 的 Bluez),而更好的消息是現在已經有了一個 Open Source 的 Java Stack 被開發出來,他就是 Blue Cove(類似 Linux 的 Impronto)。剛剛試了一下,接在 PC 上的 X-Micro USB Dongle 可以 正確無誤的偵測到 Sony Ericsson P900 和 Nokia 7650。 等到 Blue Cove 成熟到能支援 JSR-82 的所有 APIs 的時候,這份說明 似乎就沒有什麼用了。
  4. 標準宣告:你自己要負責自己所做的事,你自己要了解你自己所有的 風險. This material is provided as is. Use at your own risk.
  5. 參考資料
    1. KNOPPIX 中文交流網
    2. Knoppix's Poor Mans Install for Knoppix 3.4 (or Later).
    3. BlueZ: Official Linux Bluetooth Protocol Stack.
    4. Benhui.net
    5. Rococo Software

目錄

  1. Preparation
  2. Let's Go!

Preparations

  1. 你至少需要一個 FAT/FAT32 分割區,而且這個分割區有足夠大的可用空間, 在我的範例中我用了 1GB ,依據我安裝完的情形,300MB 應該夠用. 目前的情形 (08/2004), NTFS 分割區是不可以的. 在以下的範例中,我假設這個 FAT/FAT32 分割區 在第一個 ide 硬碟的第一個分割區,也就是 /dev/hda1.
  2. 取得一份支援 BlueZ 的 Knoppix CD. 我使用 Knoppix BV1AL 06-18-2004. 以下的範例也以它為例.
    1. 我也試過 Knoppix LTH 08/2004 版以及 Knoppix 3.4 標準版,使用上都大同小異。 只是使用 Knoppix 3.4 標準版的時候,記得要把固定家目錄(Permanent Home)的 擁有者改成 knoppix,指令是 cd /home; chown -R knoppix:knoppix knoppix.
  3. 依照 BlueZ 硬體相容清單 去 採購你的藍芽裝置. 我用的是別人幫我買的 X-Micro 的 Bluetooth USB Dongle. 雖然這個設備並未出現在相容清單內,但是目前 為止使用上都還蠻順利的。你可以在環境架好了以後,再去購買,如果發現不相容 可以馬上退貨。

Let's Go!

  1. Knoppix 的設定與安裝
    1. 可以開始了,首先調整你的電腦使得它能從光碟開機,並以 Knoppix CD 開機, 請在 boot: 的提示下輸入 rootEnter.
    2. 開機後,請設定固定家目錄。雖然依照文件我可以利用 系統控管 --> 設定家目錄, 可是我卻無法成功的完成,因此我是開啟一個 X-Shell 並輸入下列指令來 完成:(# 字號後面是註解不必輸入)
        #產生 knoppix.img 這將會變成你的固定家目錄
        dd if=/dev/zero of=/mnt/hda1/knoppix.img bs=1M count=1024
        losetup /dev/loop1 /mnt/hda1/knoppix.img
        mkfs -t ext2 /dev/loop1   #將 knoppix.img 格式化為 ext2
        mount -t ext /dev/loop1 /mnt/test #將 knoppix.img 掛進來
        df -k    # you should be able to see /mnt/test is mounted and is of size 1G
        umount /dev/loop1
        losetup -d /dev/loop1
        
    3. 重新啟動 Knoppix CD 只是這次在 boot: 的提示下輸入 root home=scan 或者 root home=/dev/hda1/knoppix.img. 以後每一次開機,也都使用同樣的指令,如此你所安裝的軟體就可以存在你的固定家目錄.
      1. 你可以留意開機的過程中,應該會出現把 /dev/hda1/knoppix.img 設定為 /home/root 的訊息;或者
      2. 你可以在開機後,打開一個 X-Shell,並輸入 df -k 來查看 /dev/hda1/knoppix.img 是否已經被掛到 /home/root?如果沒有,你要仔細檢查剛剛的步驟是否正確,或者找人幫忙。
    4. 確定一切無誤後再繼續下一個步驟。
  2. 將下列軟體安裝到 /home/root.
    1. 安裝 J2SE 1.4.x or above
      1. 我下載 j2sdk-1_4_2_05-linux-i586.bin 到 /home/root
      2. 在 /home/root 執行 sh ./j2sdk-1_4_2_05-linux-i586.bin
      3. 然後執行 ln -s j2sdk-1_4_2_05 jdk
    2. 安裝 BlueZ packages 以及 Apache Ant. BlueZ 至少需要安裝 bluez-libs and bluez-utils.
      1. 我下載 bluez-libs-2.10.tar.gz, bluez-utils-2.10.tar.gz, and apache-ant-1.6.2-src.tar.gz 到 /home/root
      2. 在 /home/root 執行 tar zxvf bluez-libs-2.10.tar.gz
      3. cd bluez-libs-2.10
      4. ./configure --prefix=/home/root
      5. make
      6. make install
      7. 重複類似的動作安裝 bluez-utils-2.10.tar.gz and apache-ant-1.6.2-src.tar.gz
    3. 製作一個適當的 ~/.bashrc 檔並且每一次打開一個新的 X-Shell 的時候都 執行 source ~/.bashrc. (我的 ~/.bashrc 提供給你們參考.)
      #!/bin/sh
      export PATH=.:$HOME/sbin:$HOME/bin:$HOME/jdk/bin:$PATH
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/lib
      export MANPATH=$MANPATH:$HOME/man
      export CLASSPATH=$CLASSPATH:.:$HOME/share/java/:$HOME/share/java/idev_bluez.jar
      
    4. 試著將你的藍芽裝置接好,然後執行下列的指令看看你的藍芽裝置是否已經被成功的 驅動。
      modprobe bluez
      modprobe hci_usb
      modprobe l2cap
      hciconfig hci0 up
      hciconfig -a
      
      我使用的 X-Micro USB Bluetooth Dongle 會列印出以下的訊息:
      hci0:   Type: USB
              BD Address: 00:02:72:01:83:CC ACL MTU: 192:8  SCO MTU: 64:8
              UP RUNNING PSCAN ISCAN 
              RX bytes:346 acl:0 sco:0 events:11 errors:0
              TX bytes:36 acl:0 sco:0 commands:10 errors:0
              Features: 0xff 0xff 0x0f 0x00 0x00 0x00 0x00 0x00
              Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
              Link policy: 
              Link mode: SLAVE ACCEPT 
              Name: 'BT1'
              Class: 0x000000
              Service Classes: Unspecified
              Device Class: Miscellaneous, 
              HCI Ver: 1.1 (0x1) HCI Rev: 0x20d LMP Ver: 1.1 (0x1) LMP Subver: 0x20d
              Manufacturer: Cambridge Silicon Radio (10)
      
    5. 請確定一切無誤之後,才執行下一個步驟。
  3. 安裝 Rococosoft's Impronto Developer Kit for Linux
    1. 首先你要跟 Rococosoft 註冊(註冊是免費的)。註冊之後, Rococosoft 會 email 給你一份授權檔(這個檔案的名稱是 LinuxLicense.txt,這是執行 Impronto 時一定要的)以及一對 username and password. 你可以下載 Impronto Developer Kit for Linux.
    2. 我將 impronto-1.3-1.i386.rpm 下載到 /home/root
    3. 在 /home/root 執行 alien --to-tgz impronto-1.3-1.i386.rpm 這個步驟會產生 impronto-1.3.tgz.
    4. 在 /home/root 執行 tar zxvf impronto-1.3.tgz
    5. 將 LinuxLicense.txt 複製到 /home/root/share/java
    6. 你需要設定適當的 LD_LIBRARY_PATH and CLASSPATH 環境變數. 但是,如果 你之前已經安裝了我的 ~/.bashrc,你無須做任何設定。如果你需要比較細部的說明, 請參考 /home/root/share/doc/impronto-1.3/user_guide.pdf.
    7. 請參考 /home/root/share/doc/impronto-1.3/user_guide.pdf 看看你是否能 成功的執行 Browser?如果可以,恭喜你,你已經成功的完成環境的建置,再來 就要好好 k Java APIs 來開發藍芽程式了。如果有任何問題,你需要仔細檢查 剛剛的步驟或者參考 /home/root/share/doc/impronto-1.3/user_guide.pdf.
    8. 一個最常見的問題就是 CLASSPATH 的設定與使用. 如果你完全依照我的 範例來做,以下是我執行 Browser 的步驟:
        cd /home/root/share/doc/impronto-1.3/examples/browser
        ant -f build-example.xml
        java -cp $CLASSPATH:classes com.rococosoft.impronto.examples.browser.Browser
        



Written by: 國立中興大學資管系呂瑞麟 Eric Jui-Lin Lu

沒有留言:

張貼留言