Bluetooth

Introduction

This page covers research into creating a Bluetooth HID connection from the Holoseat controller to the gaming system (PC or console). The Holoseat controller will need to be able to present itself as either a keyboard & mouse combination or a joypad. The material on this page covers some Bluetooth fundamentals (classic vs BLE), the types of Bluetooth hardware used in some of our target platforms (CHIP Pro, PS4, PCs), and available libraries for interacting with Bluetooth hardware in Node.js. It closes with an interesting (but not usable) example from the maker/hacker community.

Summary of Findings

Tbd

Bluetooth Fundamentals

Bluetooth has evolved dramatically in the last few years and now comes in multiple "flavors", classic and Bluetooth Low Energy (BLE). Classic Bluetooth is the standard most users are familiar with. It is used to connect smart phones to cars and headsets. Classic is the older flavor, it is more common (though that is starting to change in some markets), and it commonly requires pairing. Also, according to posts from Adafruit on their forums making classic devices requires paying costly dues to the Bluetooth SIG.

BLE is a newer Bluetooth flavor, targeting battery powered devices (often sensors) and widely supported by smart phones. It appears to be far more maker friendly as well. It is well supported by Adafruit (Bluetooth products, overwhelmingly BLE) and spawned a new book from Make publishing, Make: Bluetooth.

Human Interface Devices (HID) can be built as either classic or BLE devices. It is not clear if the same device (using the same radio board) can be made to present itself as a classic or BLE device. However, it seems clear that smaller organizations are moving to BLE only development.

Bluetooth Hardware on Holoseat Platforms

CHIP Pro

From the CHIP Pro datasheet, it uses a Realtek 8723DS combination module which provides Wi-Fi B/G/N and Bluetooth 4.2 LE connectivity." Other documentation has indicated the Bluetooth driver can be set as either a host or a device. So, it can be used to connect with classic and BLE devices or it can present itself as a BLE device (but not both at the same time). See notes above about implementing devices that present themselves as classic devices.

Unfortunately, at present Next Thing Computing has disabled the Bluetooth driver on the CHIP Pro (see this forum post last updated 2017-02-15 for more details). For the time being we cannot demonstrate any level of Bluetooth connectivity with the CHIP Pro and it is not clear when the driver will be enabled.

PS4

tbd

PCs

The following material is from Chapter 1 of Make: Bluetooth. We will include all three PC platforms in this discussion (Windows, MacOS, and Linux). Windows supports classic Bluetooth (specifically v2.1) in Windows XP, Vista, and 7. Windows 8 and 10 support BLE. Note, the availability of Bluetooth hardware on Windows PCs varies greatly, though modern laptops often have some flavor of Bluetooth hardware.

Conclusions About Bluetooth Hardware

Tbd

Useful Bluetooth Libraries

Sandeep Mistry maintains three Bluetooth libraries which we will likely find useful. Note, they are all BLE only libraries and they only work with specific Bluetooth hardware.

Maker/Hacker Example

In this example, the firmware from the RN-42 onto the HC-05. This kind of hacking, while interesting, is not strictly legal (obtaining the RN-42 firmware is not something one just does), so it is not a recommended approach. However, it does demonstrate how capable a small system can be at capturing signals from one system (the joypad) and in real time translating them to HID over Bluetooth signals. Consider this evidence that the kind of inline gameplay translation we want the Holoseat controller to do is possible. Much of the following research was found by following the links from a Hackaday post - Convert Any USB Keyboard to Bluetooth.

The video below is a summary of this project - Bluetooth HID gamepad using HC-05 module

ESP32 Wifi Bluetooth Module

ESP32 Wifi Bluetooth Module, another Bluetooth module that has people talking. Need to do more research.