あらかじめ、Bluetoothは使える状態にしておく
/etc/rc.d/init.d/bluetooth start
また、OpenOBEX及びglibのライブラリを使用するため、/usr/local/libがライブラリパス($LD_LIBRARY_PATH)に記載されている必要がある。
- /home/zaurus/.profile
- /home/zaurus/.bashrc
等に以下の記述を追加しておくと良い(/home/QtPalmtop/qpe.shを修正してもいい筈)。
export LD_LIBRARY_PATH=/home/QtPalmtop/lib:/usr/local/lib
odpは以下のようにして実行する。
# /usr/sbin/odp --mode OBEX --channel 10 --sdp --daemonize --path /tmp
--pathで指定したディレクトリ内に受信したファイルが保存される。また、この例ではチャンネル10を受信チャンネルとして指定している。
/etc/rc.d/init.d/bluetoothのスクリプト内で起動/終了しておくようにしておけば便利だろう。
(参考)
この状態で、PC等の他機器からファイル送信を行うと、指定したディレクトリにファイルが格納される。
送信には、ussp_pushとobextoolの2つがあるが、
ussp_pushはrfcommでポートを割り当てておかないと使えないようなので、
obextoolの方を使ってみる
$ obextool push /mnt/card/Documents/test.txt xx:xx:xx:xx:xx:xx 2
のように、
obextool push [ファイル名] [送信先アドレス] [送信先チャンネル]
で送信できる。
相手のチャンネルは、sdptoolで調べられる。
$ sdptool search OPUSH
Inquiring ...
Searching for OPUSH on xx:xx:xx:xx:xx:xx ...
Service Name: OBEX Object Push
Service RecHandle: 0x10001
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
「Channel:」とあるのがチャンネル番号(上記の場合2)。
ussp-pushの方は、
# rfcomm bind 0 xx:xx:xx:xx:xx:xx 2
# ussp-push /dev/rfcomm0 /mnt/card/Documents/test.txt test.txt
のようにすれば送信できる筈なのだが、送信時に必ずエラーが出てしまいうまく動かなかった。
obextoolの方を常用するつもりだったので原因を追及していない。