Sky Watch

Raspberry Pi 2 模拟 Switch 手柄

最近看到了一个叫 joycontrol 的玩意,可以通过蓝牙模拟 Switch 手柄。原则上这个东西可以装在任何 Linux 机器上,README 里也说在 Ubuntu 和 Raspberry Pi 4 上测试过,但是我手上只有一个 Raspberry Pi 2B+,不自带蓝牙,我只好单独买了个 USB 蓝牙适配器。注意很多蓝牙适配器是不支持 Linux 的(比如我一开始看到的 TP-Link UB400),买的时候还是要看一下。

我的树莓派上装的是官方推荐的 Raspbian,在安装 joycontrol 的过程中踩了很多坑,最终基本都可以归结到一个问题,就是软件仓库里只有 Python 3.5,而 joycontrol 用到了一些 3.6 之后才有的特性,比如 f-string(难道我会告诉你我是昨天才知道 Python 有 f-string 的这个秘密么)。当然大便有很多 backport 仓库,但是我懒得折腾了,决定手动编译 Python 3.8。在编译之前,还需要安装这些包:

# apt install ffi-dev libdbus-1-dev libdbus-glib-1-dev libbluetooth-dev libhidapi-hidraw0 libhidapi-libusb0

其中 libbluetooth-dev 是 Python 支持蓝牙的头文件,没有这个 Python 就不能支持蓝牙的 socket;FFI 和 dbus 是后面编译 dbus-python 需要;libhid(好像)是运行 joycontrol 需要。

有了这些以后,剩下的就简单了。按照正常工序编译安装最新版 Python,并使用其中的 pip 安装 dbus-python。最后 clone joycontrol 的仓库,按照 README 里的方法安装测试就好。

整个安装过程总结成一句话就是:滚动升级大法好。