| HIVE |
| ==== |
| |
| Welcome to the Bumble Hive. |
| This is a collection of apps and virtual devices that can run entirely in a browser page. |
| The code for the apps and devices, as well as the Bumble runtime code, runs via [Pyodide](https://pyodide.org/). |
| Pyodide is a Python distribution for the browser and Node.js based on WebAssembly. |
| |
| The Bumble stack uses a WebSocket to exchange HCI packets with a virtual or physical |
| Bluetooth controller. |
| |
| The apps and devices in the hive can be accessed by following the links below. Each |
| page has a settings button that may be used to configure the WebSocket URL to use for |
| the virtual HCI connection. This will typically be the WebSocket URL for a `netsim` |
| daemon. |
| There is also a [TOML index](index.toml) that can be used by tools to know at which URL to access |
| each of the apps and devices, as well as their names and short descriptions. |
| |
| !!! tip "Using `netsim`" |
| When the `netsimd` daemon is running (for example when using the Android Emulator that |
| is included in Android Studio), the daemon listens for connections on a TCP port. |
| To find out what this TCP port is, you can read the `netsim.ini` file that `netsimd` |
| creates, it includes a line with `web.port=<tcp-port>` (for example `web.port=7681`). |
| The location of the `netsim.ini` file is platform-specific. |
| |
| === "macOS" |
| On macOS, the directory where `netsim.ini` is stored is $TMPDIR |
| ```bash |
| $ cat $TMPDIR/netsim.ini |
| ``` |
| |
| === "Linux" |
| On Linux, the directory where `netsim.ini` is stored is $XDG_RUNTIME_DIR |
| ```bash |
| $ cat $XDG_RUNTIME_DIR/netsim.ini |
| ``` |
| |
| |
| !!! tip "Using a local radio" |
| You can connect the hive virtual apps and devices to a local Bluetooth radio, like, |
| for example, a USB dongle. |
| For that, you need to run a local HCI bridge to bridge a local HCI device to a WebSocket |
| that a web page can connect to. |
| Use the `bumble-hci-bridge` app, with the host transport set to a WebSocket server on an |
| available port (ex: `ws-server:_:7682`) and the controller transport set to the transport |
| name for the radio you want to use (ex: `usb:0` for the first USB dongle) |
| |
| |
| Applications |
| ------------ |
| |
| * [Scanner](web/scanner/scanner.html) - Scans for BLE devices. |
| |
| Virtual Devices |
| --------------- |
| |
| * [Speaker](web/speaker/speaker.html) - Virtual speaker that plays audio in a browser page. |
| * [Heart Rate Monitor](web/heart_rate_monitor/heart_rate_monitor.html) - Virtual heart rate monitor. |
| |