如何使用 WSL2 在 Windows 上的 Dockerized Flask 应用程序中访问蓝牙 (BLE) 设备?

问题描述 投票:0回答:1

我正在尝试使用 WSL2 (Ubuntu) 对一个与 Windows 11 计算机上的蓝牙低功耗 (BLE) 设备交互的 Flask 应用程序进行 dockerize。

我做了什么:

  1. 设置 WSL2 和 Docker 桌面:
  • 在 WSL2 上安装 Ubuntu。
  • 安装了带有 WSL2 集成的 Docker Desktop。
  1. 安装 usbipd-win 以连接 USB 蓝牙适配器:
  • 运行 usbipd 列表并找到我的 USB 蓝牙适配器(BUSID 2-1)。
  • 将其附加到 WSL2:

usbipd attach --busid 2-1 --wsl Ubuntu

  1. WSL2 中已验证的设备:
  • lsusb 显示蓝牙适配器:

Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

  1. 启用 Systemd 并安装蓝牙软件包:
  • 编辑 /etc/wsl.conf 以启用 systemd。
  • 已安装蓝牙、bluez等
  1. 尝试启动蓝牙服务:

sudo systemctl start bluetooth

错误:

Bluetooth service was skipped because of an unmet condition check (ConditionPathIsDirectory=/sys/class/bluetooth).

  1. 检查蓝牙目录:

ls /sys/class/bluetooth

结果:

No such file or directory

  1. 尝试使用bluetoothctl和hciconfig:
  • 两者都报告错误,表明未找到蓝牙硬件。

我的问题:

  • 我无法让蓝牙服务识别 WSL2 中的 USB 蓝牙适配器。
  • 因此,我的 Dockerized Flask 应用程序无法访问 BLE 设备。

问题:

  • 如何在 Windows 上的 WSL2 中运行的 Dockerized Flask 应用程序中启用 BLE 访问?
  • 有没有办法让蓝牙服务识别加密狗?
  • 在此设置中是否有其他方法可以从 Docker 访问 BLE 设备?

我希望通过将 USB 蓝牙适配器连接到 WSL2 并设置必要的服务,我将能够从我的 Dockerized Flask 应用程序访问 BLE 设备。然而,尽管lsusb中出现了dongle,但由于不满足条件,蓝牙服务无法启动,并且蓝牙目录和接口丢失。这会阻止 Flask 应用程序与 BLE 设备交互。

python docker flask bluetooth windows-subsystem-for-linux
1个回答
0
投票

我不是这个特定问题的专家,但是容器是否以特权运行?你没有写任何相关内容,所以我不清楚。

© www.soinside.com 2019 - 2024. All rights reserved.