Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 系統下藍牙手機操作實戰:串口通訊與文件傳輸全流程

編輯:Linux 教學

前言

本文記錄在 Linux(以 Fedora Core 5 為例)下通過藍牙連接手機(諾基亞 6600)實現 AT 指令控制(發送短信)與 OBEX 文件傳輸的完整操作流程,適用於內核 2.6+ 且已內置藍牙協議棧的發行版。

一、環境準備與服務啟動

1. 系統要求

  • Linux 內核 2.6 以上(FC5、RHEL 5、Ubuntu 8.04+ 均滿足)
  • 藍牙適配器(USB 或內建)
  • bluez-utils / bluez-tools 套件已安裝

2. 啟動藍牙服務並掃描設備

# 啟動藍牙守護進程
/etc/init.d/bluetooth start

# 掃描可見設備,獲取手機 MAC 地址
hcitool scan
# 輸出示例:
# Scanning ...
#     00:13:E0:2A:99:6A       Nokia 6600

3. 服務瀏覽:確認手機支持的配置文件

sdptool browse 00:13:E0:2A:99:6A
# 關鍵輸出:
# Service Name: Dial-up Networking
#   Channel: 1
# Service Name: OBEX Object Push
#   Channel: 9

記錄 Channel 1 (DUN) 和 Channel 9 (OBEX Push),後續連接需用到。

二、建立 RFCOMM 虛擬串口(用於 AT 指令)

1. 綁定 RFCOMM 設備

# 語法:rfcomm bind <設備編號>  <通道號>
rfcomm bind 0 00:13:E0:2A:99:6A 1

成功後會生成 /dev/rfcomm0 字符設備:

ls -l /dev/rfcomm0
# crw------- 1 root root 216, 0 Nov 5 20:49 /dev/rfcomm0

2. 測試連接

# 簡單測試(需手機端確認配對碼)
cat < /dev/rfcomm0
# 若提示 "Operation already in progress",嘗試重啟藍牙服務或重新綁定

3. 使用 Kermit 進行 AT 指令通訊(推薦,比 minicom 穩定)

# 安裝 kermit
yum install ckermit  # 或 apt-get install ckermit

# 交互式連接
kermit
C-Kermit> set line /dev/rfcomm0
C-Kermit> set speed 9600
C-Kermit> connect
# 進入 AT 指令模式,輸入:
ati3
# 回顯手機型號:Nokia 6600

# 發送短信示例(PDU 模式較複雜,此處略)
# 退出:Ctrl+\ 然後輸入 C

三、OBEX 文件傳輸(手機 ↔ 電腦)

FC5 內置 obex_push 工具,支雙向傳輸:

1. 發送文件到手機

# 語法:obex_push <通道號>  <文件路徑>
obex_push 9 00:13:E0:2A:99:6A /mnt/d/mig-29.jpg

2. 接收手機發送的文件

# 監聽模式,默認保存至 /tmp
obex_push -l 9 00:13:E0:2A:99:6A
# 手機端選擇"通過藍牙發送"即可

四、常見問題與排錯

現象原因分析解決方案
minicom 提示 "cannot open /dev/rfcomm0"RFCOMM 設備未正確綁定或已被釋放重新執行 rfcomm bind;改用 kermit
配對失敗 / PIN 碼不匹配雙端 PIN 碼不一致在 /etc/bluetooth/pin 設置固定 PIN,或手機端輸入同一碼
文件傳輸中斷藍牙信號弱或 OBEX 協議不兼容縮短距離;嘗試 obexftp 替代 obex_push
內核 2.4 系統無藍牙支持藍牙子系統僅在 2.6+ 完善升級發行版(推薦 FC5+、RHEL5+、Debian Etch+)

五、自動化腳本示例

#!/bin/bash
# 藍牙手機自動連接腳本
MAC="00:13:E0:2A:99:6A"
DUN_CH=1
OBEX_CH=9

# 1. 綁定 DUN 串口
rfcomm release 0 2>/dev/null
rfcomm bind 0 $MAC $DUN_CH

# 2. 發送測試短信(需預先生成 PDU)
# echo "AT+CMGS=..." > /dev/rfcomm0

# 3. 接收文件(後台運行)
obex_push -l $OBEX_CH $MAC -d /home/user/bluetooth_inbox &

echo "藍牙服務就緒:串口 /dev/rfcomm0,OBEX 監聽中..."

總結

Linux 下操作藍牙手機的核心流程是:服務啟動 → sdptool 獲取通道 → rfcomm 綁定虛擬串口 → 終端軟體發送 AT 指令 / obex_push 文件傳輸。關鍵點在於正確識別 DUN 和 OBEX 的通道號,並使用穩定的終端工具(推薦 Kermit)。現代發行版(Ubuntu 20.04+、Fedora 35+)已整合藍牙面板,圖形界面操作更便捷,但命令行方式仍是腳本自動化與嵌入式場景的首選。

Copyright © Windows教程網 All Rights Reserved