次のコマンドを使用して、LinuxでBluetoothRFCOMMサービスを実行しています。
sdptool add --channel 1 SP
rfcomm watch hci0 1 "$COMMAND" {}
# ^ here
は$COMMAND
、パラメータとして渡されたファイルにバイナリデータを書き込みます。次の手順を実行して、正しく動作することをテストしました。
FIFO=$(tempfile)
mkfifo "$FIFO"
"$COMMAND" "$FIFO" &
cat "$FIFO" | hexdump -C # <- output is correct
ただし、SPP / RFCOMM検出(UUID)を介して別のデバイスからサービスに接続すると、ストリーム内で( )00001101-0000-1000-8000-00805F9B34FB
のすべてのインスタンスが0x0A
(LF
)に置き換えられていることがわかります。バイナリデータも送信するハードウェアシリアルデバイスに接続しようとしましたが、変換が行われないため、問題は受信側ではありません。置換を実行するのは、最初のスニペット(行の上)のコマンドである必要があります。0x0D
0x0A
CR
LF
# ^ here
ツールがこの置換を行うのはなぜrfcomm
ですか?また、どうすれば無効にできますか?