You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派蓝牙连接iPhone及数据传输:问题排查与实现方案

解决树莓派与iPhone蓝牙连接及数据传输问题

嘿,我之前帮朋友排查过类似的蓝牙配对问题,咱们一步步来解决你的困扰:

一、先搞定iPhone搜不到树莓派的问题

iPhone对蓝牙设备的发现逻辑比较严格,树莓派默认配置可能没满足它的要求,先从基础配置入手:

  1. 先确保蓝牙服务正常运行
    有时候蓝牙服务会临时抽风,先重启试试:

    sudo systemctl restart bluetooth
    

    用这条命令确认状态,看到active (running)就没问题:

    sudo systemctl status bluetooth
    
  2. 开启可发现模式并设置设备类别
    树莓派默认没设置正确的设备类别,导致iPhone识别不出来,而且可能没开可发现模式。用bluetoothctl工具来配置:

    • 打开蓝牙控制台:
      bluetoothctl
      
    • 在控制台里依次输入这些命令:
      # 开启可发现模式
      discoverable on
      # 允许设备配对
      pairable on
      # 设置设备别名,方便iPhone识别
      set-alias "Raspberry Pi"
      # 设置设备类别为桌面计算机,解决Mac显示未知的问题
      set-class 0x00010c
      

    输完后输入exit退出控制台。现在再用iPhone搜索蓝牙设备,应该能看到"Raspberry Pi"了。

二、解决Mac显示设备类型未知的问题

刚才的set-class 0x00010c已经把树莓派的蓝牙类别设为桌面计算机了,你可以取消和Mac的配对,重新配对一次,设备类型就会正常显示了。

三、实现树莓派和iPhone的数据传输

常用的有两种方式,SPP适合常规文本/文件传输,BLE适合低功耗场景,我都给你讲讲:

方式1:SPP串行端口协议(推荐常规传输)

  1. 安装必要的工具和库
    先装SPP相关的依赖:

    sudo apt-get update && sudo apt-get install bluez-tools python3-bluez
    
  2. 开启SPP服务
    编辑蓝牙配置文件,确保SPP功能开启:

    sudo nano /etc/bluetooth/main.conf
    

    找到EnableSPP那一行,把注释去掉改成:

    EnableSPP = true
    

    按Ctrl+O保存,Ctrl+X退出,然后重启蓝牙服务:

    sudo systemctl restart bluetooth
    
  3. 树莓派端启动SPP监听
    写个简单的Python脚本(比如叫spp_server.py)来接收数据:

    import bluetooth
    
    # 创建蓝牙socket
    server_socket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
    port = 1
    server_socket.bind(("", port))
    server_socket.listen(1)
    
    print("等着iPhone连过来...")
    client_socket, address = server_socket.accept()
    print(f"搞定!已和{address}建立连接")
    
    while True:
        try:
            # 接收数据
            data = client_socket.recv(1024)
            if not data:
                break
            print(f"收到数据:{data.decode('utf-8')}")
            # 可以给iPhone回个消息
            client_socket.send("收到啦!".encode('utf-8'))
        except Exception as e:
            print(f"连接断了:{e}")
            break
    
    # 关闭连接
    client_socket.close()
    server_socket.close()
    

    运行脚本:

    python3 spp_server.py
    
  4. iPhone端连接传输
    你需要在App Store装个支持SPP的APP,比如「Serial Bluetooth Terminal」,打开后搜索树莓派,配对(PIN码一般是0000或1234),之后就能互相发消息了。

方式2:BLE低功耗蓝牙(适合小量数据)

如果你的树莓派是3代及以上(自带BLE),可以用这个方式,更省电:

  1. 安装BLE库:
    sudo apt-get install python3-pip
    pip3 install bluepy
    
  2. 写个简单的BLE服务器脚本,iPhone上用「LightBlue Explorer」这类APP就能连接,适合传传感器数据这类小数据量的场景。

四、踩坑提醒

  • 要是还是搜不到:用hciconfig看看蓝牙硬件状态,确保hci0是UP的;另外iPhone要开蓝牙,并且在可搜索状态。
  • 配对失败:确保树莓派的pairable模式是开的,配对时输入正确的PIN码,别输错了。

内容的提问来源于stack exchange,提问作者Sherif O.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:25:53