ArchLinux蓝牙连接PS3手柄
Mr.Cookie Lv1

intro

最近中午一直在国服DiabloII,从家里仓库捡了个小PS3手柄,没想到连接过程还挺坎坷

必要条件

  • 首先,你要有蓝牙,并能正常驱动
    bluetooth.service
  • 然后,你要有一根miniUSB的线用于连接电脑
    MiniUSB
  • sixpair
    配对 PS3 手柄和蓝牙适配器,它的作用是在你通过 USB 连接手柄时生成配对密钥,将手柄与蓝牙适配器绑定。sixpair 并不负责连接或管理手柄输入,只是用来进行配对。
  • sixad
    管理 PS3 手柄的蓝牙连接 和 输入支持,它在后台运行,确保手柄连接到系统并且可以用作输入设备。sixad 并不提供配对功能

连接流程

先说说流程,PS3蓝牙连接的流程为,手柄
USB连接主机,主机写入信任地址到手柄,然后手柄在断开有线连接后,会尝试该蓝牙地址.
当然Linux下,已经有大神写好了一个配对程序sixpair,只需要有线连接手柄时运行该程序即可把适配器地址回写到手柄
这里是踩坑的一个点,由于之前连接过PS4的手柄,安装过ds4drv,我记得在win下这个程序是可以驱动DualShock3的,所以想当然的以为只要sixpair写入主机地址回手柄,蓝牙连接就可以了.
其实这里需要用到一个软件sixad,安装后,你的蓝牙就可以顺利添加控制器设备了

详细步骤

  • 开启蓝牙

    1
    2
    sudo pacman -Sy bluez
    sudo systemctl enable --now bluetooth.service

    这时候你就可以用bluetoothctl来连接控制你的蓝牙设备了,当然你想要个GUI程序只需要安装blueman就可以,它还提供一个applet

    1
    sudo pacman -Sy blueman
  • sixad服务

    1
    sudo pacman -Sy sixad

    安装完成后,发现aur源里的这个sixad没有自带服务,好我们新建一个

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # /etc/systemd/system/sixad.service
    [Unit]
    Description=Sixad service for PS3 controller
    After=bluetooth.service

    [Service]
    Type=simple
    ExecStart=/usr/bin/sixad --start
    Restart=always
    User=root
    Group=root

    [Install]
    WantedBy=multi-user.target
    1
    2
    sudo systemctl daemon-reload
    sudo systemctl enable --now sixad.service
  • 有线连接电脑
    首先安装sixpair,然后用执行就可以回写地址到控制器

    1
    2
    sudo pacman -Sy sixpair
    sudo sixpair

    sixpair

  • 拔掉你的usb线,然后按下PS键
    你发现你的后柄振动了几下后,连接指示灯已经亮了.Ok Enjoy it!
    blueman