BLE Monitor - Stats from your pocket

PC Monitor Over BLE: Checking Your Computer Stats From Your Pocket

Checking system stats usually means alt-tabbing to Task Manager, glancing at a sidebar widget, or leaning over to read a secondary display. The BLEShark Nano ($36.99+) offers a different approach: a small OLED device in your hand or pocket showing live CPU usage, RAM, temperature, and other stats from your PC over Bluetooth Low Energy.

This article covers what the PC Monitor app shows, how the BLE data pipeline actually works, what you need to set it up, and which situations make this genuinely useful rather than a novelty.

Table of Contents

What the PC Monitor App Shows

The BLEShark Nano's OLED is 128x64 pixels. Small but dense. The PC Monitor app organizes stats across multiple pages you navigate with the device's buttons:

  • CPU: Total usage percentage, per-core breakdown, current clock speed
  • Memory: RAM used vs total, swap/page file usage
  • GPU: Utilization percentage, VRAM used vs total
  • Temperatures: CPU package temp, GPU die temp, drive temps where available
  • Network: Upload and download throughput (bytes/sec)
  • Storage: Active drive, read/write speeds
  • Battery: On laptops, charge level and whether plugged in

The data refreshes every few seconds. Not a real-time oscilloscope trace, but sufficient for seeing at a glance whether something is running hot or eating resources. The update rate is configurable in the host software.

How the BLE Data Pipeline Works

The BLE communication between the host PC and the BLEShark Nano uses the GATT (Generic Attribute Profile) model. GATT defines a client/server structure where one side exposes data through services and characteristics, and the other reads or subscribes to those data points.

For PC Monitor, the Nano acts as a GATT client. The host PC software runs a small background agent that acts as a GATT server - it creates a BLE service with characteristics for each stat category (CPU, memory, temperature, and so on). The Nano discovers and connects to this service, then reads characteristic values on a polling interval.

Alternatively, the host agent can use GATT notifications. With notifications, the server (host PC) pushes updates to the subscribed client (the Nano) whenever values change beyond a threshold, rather than waiting for the Nano to poll. Notifications reduce latency and are more efficient for values that change rapidly, like CPU usage under load. The specific mode used depends on the host software configuration.

BLE GATT communication is connection-oriented. Once the Nano pairs and connects, the link is maintained. Data flows continuously during that session. If you walk out of range, the connection drops and the Nano's screen shows the last received values or a "disconnected" indicator. When you come back in range, the connection reestablishes automatically.

The data types being transferred are simple: integer or float values for percentages and temperatures, with units handled by the display app. The total bandwidth required is minimal - well within what BLE 5.0 handles at low power. A full update of all monitored stats fits easily within a single GATT notification cycle.

sequenceDiagram
    participant PC as Host PC
(GATT Server) participant BLE as BLE Radio
(2.4GHz) participant NANO as BLEShark Nano
(GATT Client) participant OLED as OLED Display
(128x64) Note over PC: Background agent reads
system sensors via WMI/sysfs PC->>PC: Collect CPU %, RAM, GPU,
temps, fan speeds PC->>BLE: Create GATT Service
(custom UUID) Note over PC,NANO: Connection Establishment NANO->>BLE: Scan for PC Monitor service BLE->>NANO: Service discovered NANO->>PC: Connect + pair PC->>NANO: Connection established Note over PC,NANO: Data Subscription NANO->>PC: Subscribe to CPU characteristic NANO->>PC: Subscribe to RAM characteristic NANO->>PC: Subscribe to GPU characteristic NANO->>PC: Subscribe to Temp characteristic loop Every 1-2 seconds PC->>PC: Read sensor values PC->>NANO: GATT Notification (CPU data) PC->>NANO: GATT Notification (RAM data) PC->>NANO: GATT Notification (GPU data) PC->>NANO: GATT Notification (Temp data) NANO->>OLED: Render stats on active page end Note over NANO,OLED: User navigates pages
with physical buttons

BLE GATT data pipeline - the host PC acts as a GATT server pushing system stats via notifications to the BLEShark Nano, which renders them on its OLED display.

graph LR
    subgraph HOST["Host PC"]
        SENSORS["Hardware Sensors
CPU, GPU, RAM,
Drives, Network"] AGENT["PC Monitor Agent
(Background Service)"] BLE_STACK["BLE Stack
(GATT Server)"] SENSORS -->|"WMI / sysfs
sensor polling"| AGENT AGENT -->|"Encode values
to characteristics"| BLE_STACK end subgraph RADIO["BLE Link"] CH["2.4GHz
Connection-oriented
~10m range"] end subgraph NANO["BLEShark Nano"] BLE_CLIENT["BLE Radio
(GATT Client)"] ESP32["ESP32-C3
RISC-V MCU"] DISPLAY["128x64 OLED"] BUTTONS["Navigation
Buttons"] BLE_CLIENT -->|"Notifications"| ESP32 ESP32 -->|"SPI/I2C"| DISPLAY BUTTONS -->|"Page select"| ESP32 end BLE_STACK --> CH CH --> BLE_CLIENT

End-to-end PC Monitor architecture - sensor data flows from hardware through the host agent over BLE to the Nano's ESP32-C3, which drives the OLED display.

The Host Software

The host PC needs a small agent running in the background. This agent:

  1. Reads system stats from the OS (using platform-appropriate APIs)
  2. Hosts a BLE GATT server with characteristics for each stat
  3. Accepts connections from the BLEShark Nano
  4. Pushes or responds to reads with current values

On Windows, the agent uses the Windows Performance Counters API and the Windows BLE stack. Performance Counters gives access to CPU usage per core, disk I/O, network throughput, and more. GPU stats on Windows come from the DirectX Diagnostic Tools APIs or hardware-specific libraries depending on GPU vendor.

On macOS, the equivalent is IOKit for hardware sensors and the IOPowerSources API for battery. BLE communication on macOS uses Core Bluetooth.

On Linux, the agent reads from /proc/stat, /proc/meminfo, /sys/class/hwmon, and similar system interfaces. BLE is handled through BlueZ.

The host software is lightweight - a background process using minimal CPU, designed to run continuously without noticeable impact on system performance. Installation is straightforward: download the agent for your platform, run it, and it handles the rest.

Setup and Pairing

Getting PC Monitor working takes a few minutes:

  1. Install the host agent on your computer. Available for Windows, macOS, and Linux.
  2. Start the agent. It runs in the system tray (Windows/macOS) or as a background daemon (Linux).
  3. On the BLEShark Nano, navigate to the PC Monitor app from the main menu.
  4. The Nano starts BLE advertising and scanning for a compatible host agent.
  5. Pair the connection when prompted on the PC side.
  6. Stats appear on the Nano's OLED within a few seconds of connection.

Once paired, the Nano reconnects automatically to that host whenever PC Monitor is the active app and the host agent is running. You do not need to re-pair on subsequent uses.

If you use PC Monitor across multiple machines, the Nano stores pairing information and can connect to whichever machine has the agent running. The connection is BLE-based, so only one connection is active at a time. Switching to a different host means the current connection drops and the Nano connects to the new one.

When This Is Actually Useful

Server Room and Rack Monitoring

The most practical professional use case. In a server room or equipment rack, walking to each machine and checking its stats individually is slow. With a BLEShark Nano and a host agent running on each server, you can walk past a rack and glance at CPU temperature, disk activity, and network throughput from your hand. The 10-meter BLE range covers most server room footprints.

This is a lightweight alternative for situations where a full monitoring stack (Prometheus, Grafana, Nagios, or similar) is not deployed or is overkill. Useful for small hosting environments, lab setups, and development server closets.

Gaming Rig Monitoring

During intensive gaming, checking whether your GPU is thermal throttling or your RAM is fully committed means switching away from the game. Having stats on a separate physical device - the Nano sitting on the desk or mounted nearby - lets you monitor without breaking focus. CPU temperature, GPU utilization, and RAM usage tell you most of what you need to know about system load during play.

Workstation Monitoring During Long Compiles or Renders

Long build times or rendering jobs leave you waiting. Glancing at the Nano in your pocket or on your desk shows whether the job is still maxing out the CPU (normal, still working) or has dropped to minimal usage (potentially stuck, error, or finished). More convenient than unlocking your screen to check Task Manager every few minutes.

Presentation Mode

Presenters often want to know if their laptop is about to run out of battery or if a resource-intensive demo is about to cause a thermal throttle. The Nano shows battery percentage and CPU/GPU load without any visible screen interaction - the presenter can glance at the Nano discreetly while the main display stays on the presentation.

Standing Desk and Remote Work Setups

If your workstation is mounted or placed away from where you sit or stand, the Nano reduces the number of times you need to physically move to check what your machine is doing. A 5-meter BLE connection covers most room configurations.

Battery and Range

BLE in connected mode draws around 10-25mA on the ESP32-C3. The BLEShark Nano's 500mAh battery gives several hours of continuous PC Monitor operation before needing a USB-C charge. If the display dims or the Nano goes to sleep after inactivity (configurable screensaver timeout), effective battery life extends further.

BLE 5.0 indoor range is approximately 10 meters under clean conditions. Concrete walls, metal racking, and 2.4GHz interference from other devices reduce this. In a typical office or home environment, 6-8 meters of reliable connection is a practical expectation. For server room use, most racks are within that range of the access point in a room.

OLED Layout and Navigation

The Nano's 128x64 OLED uses a two-line primary layout with a header row showing the current stat category and page indicator. Button navigation:

  • Button 1 (back): Return to the previous category or exit to the main menu
  • Button 2 (select): Confirm / drill down to per-core or per-process detail where available
  • Button 3 (forward): Advance to the next category page

Each category page fits within the 128x64 display. The summary pages show the most actionable values at a glance: percentage bars for CPU/GPU/memory, temperature with color-coded severity, and network rates in human-readable units (KB/s, MB/s). Detail pages show per-core CPU breakdown or individual GPU sensor values when the device has multiple sensors.

Temperature display includes a threshold indicator. The firmware has configurable warning thresholds - above 80C for most CPUs, 85C for most discrete GPUs as common defaults. The OLED inverts the display or shows a warning icon when values exceed configured thresholds, so a quick glance tells you whether temps are nominal without reading the numbers.

This makes the PC Monitor app a practical tool even across a room. You do not need to read the specific numbers if the visual state (normal layout vs inverted warning display) tells you what you need to know.

Get the BLEShark Nano
Back to blog

Leave a comment