Matlab Simulate Bluetooth Network
MathWorksOfficialCreated by MathWorks
- Skill
- Tool integration
- Science and research
- BSD-2-Clause
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides the framework for performing system-level simulations of Bluetooth networks using the Bluetooth Toolbox. It enables the modeling of various Bluetooth topologies, including BLE ACL data connections, LE Audio streams (CIS/CIG), Classic BR/EDR piconets, and coexistence scenarios with adaptive frequency hopping. The skill integrates with the wireless network simulator to allow for node configuration, traffic generation, and performance analysis through KPIs.
What it does
- Simulates BLE ACL connections and LE Audio streams like CIS/CIG.
- Models Classic BR/EDR piconets with ACL data and SCO voice links.
- Supports BLE and BR/EDR coexistence with adaptive frequency hopping.
- Configures connection parameters such as intervals, offsets, and PHY modes.
- Provides KPI tracking for throughput, latency, and packet loss rates.
- Facilitates node setup using specialized Bluetooth node objects.
When to use it
- When evaluating Bluetooth network performance at the system level.
- For simulating multi-peripheral star networks or LE Audio use cases.
- When testing connection establishment and timing in BLE GAP scenarios.
- For analyzing coexistence between different Bluetooth technologies.
- When you need to model specific Bluetooth topologies like stereo TWS or hearing aids.
Advantages
- Enables system-level performance analysis without needing full PHY-layer modeling.
- Provides pre-validated templates for common audio and data use cases.
- Allows for flexible configuration of connection parameters and channel selection.
- Supports complex multi-node topologies with specific traffic requirements.
- Integrates seamlessly with standard wireless network simulation workflows.
Usage examples
- “How do I set up a basic BLE point-to-point connection?”
- The skill provides a pattern using bluetoothLENode and configureConnection to establish an ACL link between a central and peripheral node.
- “Can I simulate LE Audio for stereo speakers?”
- Yes, the skill supports CIS configuration for LE Audio, allowing you to define ISO intervals and subevents for multi-peripheral audio streams.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/matlab/matlab-simulate-bluetooth-network/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip matlab-simulate-bluetooth-network.zip -d .agents/skills
Documentation by MathWorks
Bluetooth System-Level Simulation
Entry point for all Bluetooth system-level simulation. All Bluetooth simulations use sim = wirelessNetworkSimulator.init and follow the workflow defined in matlab-simulate-wireless-network (simulator init, traffic, mobility, instrumentation, addNodes, run).
When to Use
BLE ACL point-to-point or star network connections
LE Audio unicast with CIS/CIG (stereo speakers, hearing aids)
BLE GAP connection establishment (advertising, scanning, connection timing)
Classic BR/EDR piconets with ACL data or SCO voice
BLE + BR/EDR coexistence with adaptive frequency hopping
Any simulation using
bluetoothLENode,bluetoothNode
When Not to Use
Non-Bluetooth wireless simulations (use
matlab-simulate-wireless-networkinstead)PHY-layer or link level Bluetooth waveform generation, receiver analysis or BER analysis
Generic simulator setup, traffic models, or mobility (use
matlab-simulate-wireless-network)
Scenario → Reference Routing
| Scenario | Reference |
|---|---|
| BLE realistic connection setup (advertising, scanning, GAP) | references/ble-gap-connection.md |
| BLE point-to-point data, star network, ACL connections | references/ble-connection.md |
| LE Audio unicast (stereo speakers, hearing aids, CIS/CIG) | references/ble-cis.md |
| Classic Bluetooth earbuds, SCO voice, ACL data | references/bluetooth-bredr.md |
| BLE + BR/EDR coexistence, adaptive frequency hopping | references/bluetooth-coexistence.md |
| Capture and visualization (PCAP, IQ, event tracing, traffic viewer) | See matlab-simulate-wireless-network skill |
Node Roles
BLE (ACL, CIS):
bluetoothLENode("central"),bluetoothLENode("peripheral")BR/EDR:
bluetoothNode("central"),bluetoothNode("peripheral")— max 7 peripherals per central
Traffic Attachment Rules
addTrafficSource(sourceNode, traffic, ...):
ACL/CIS/BR/EDR:
DestinationNode=peerrequired. CIS also needsCISConfig=cfgCISOut.BR/EDR SCO: No traffic call — implicit via
SCOPacketTypein connection config.
kpi() Availability
| Topology | "throughput" | "latency" | "PLR" / "PDR" | Layer |
|---|---|---|---|---|
| BLE ACL | LL only | App only | Both LL and App | "LL" or "App" |
| BLE CIS | LL only | App only | Both LL and App | "LL" or "App" |
| BR/EDR | Baseband | — | Baseband | "Baseband" |
Connection/Configuration Setup
| Topology | Config Object | Function | Notes |
|---|---|---|---|
| BLE ACL | bluetoothLEConnectionConfig | configureConnection(cfg, central, peripheral) | Per-peripheral in loop; unique AccessAddress per connection |
| BLE CIS | bluetoothLEConnectionConfig + bluetoothLECISConfig | [~, cfgCISOut] = configureConnection(cfg, central, peripheral, CISConfig=cfgCIS) | Pass cfgCISOut to addTrafficSource(..., CISConfig=cfgCISOut) |
| BR/EDR | bluetoothConnectionConfig | configureConnection(cfg, central, peripherals) | Single call with vector of peripherals |
Common Mistakes
bluetoothNodefor BLE (or vice versa): BR/EDR =bluetoothNode, BLE =bluetoothLENodeWrong kpi Layer: BLE throughput →
"LL", BLE latency →"App", BR/EDR →"Baseband"onlyProperties locked after
run(): Node/connection properties cannot change mid-sim. UseupdateChannelListfor mid-sim channel updates.configureConnectionwith peripheral vector for BLE: Must call per-peripheral in loop (BR/EDR accepts vector)Unique
AccessAddressper connection: Each BLE connection on same central needs different AccessAddressDataRate in Kbps:
DataRate=100means 100 Kbps, not 100 bpsGeneratePacket=trueis not valid: Not applicable for network-level simulation. UseOnTime=Inffor continuous traffic.
<!-- Copyright 2026 The MathWorks, Inc. -->
Files
- ATTRIBUTION.mdAdded by AutoGineer1.1 KiB
- LICENSELicence file added by AutoGineer1.4 KiB
- SKILL.md4.7 KiB
- manifest.yaml522 B
- references/ble-cis.md5.9 KiB
- references/ble-connection.md4.9 KiB
- references/ble-gap-connection.md6.3 KiB
- references/bluetooth-bredr.md6.2 KiB
- references/bluetooth-coexistence.md5.1 KiB
references/ble-connection.md
BLE ACL Connection Simulation
Simulate Bluetooth LE ACL (Asynchronous Connection-Less) data links between central and peripheral nodes using system-level simulation.
When to Use
BLE central-peripheral ACL data connections (1 central, N peripherals)
Configuring connection intervals, active periods, offsets, PHYMode
Comparing PHY modes or connection parameter settings
Pre-configured instant connections (no advertising/scanning phase)
Need realistic connection establishment via advertising/scanning? Use references/ble-gap-connection.md instead.
Multi-Peripheral Star Network
BLE configureConnection does NOT accept a vector of peripherals — call per-peripheral in a loop.
sim = wirelessNetworkSimulator.init;
central = bluetoothLENode("central", Position=[0 0 0], Name="Central");
peripherals = bluetoothLENode("peripheral", ...
Position=[5 0 0; 0 5 0; -5 0 0; 0 -5 0], ...
Name=["P1", "P2", "P3", "P4"]);
numPeripherals = numel(peripherals);
connectionInterval = 0.02;
activePeriod = floor(connectionInterval / numPeripherals / 0.00125) * 0.00125;
cfg = bluetoothLEConnectionConfig;
cfg.ConnectionInterval = connectionInterval;
cfg.ActivePeriod = activePeriod;
for i = 1:numPeripherals
cfg.ConnectionOffset = (i - 1) * activePeriod;
cfg.AccessAddress = sprintf("5DA4427%d", i - 1);
configureConnection(cfg, central, peripherals(i));
end
traffic = networkTrafficOnOff(DataRate=100, PacketSize=27, OnTime=Inf);
addTrafficSource(central, traffic, DestinationNode=peripherals);
addNodes(sim, [central; peripherals(:)]);
run(sim, 0.5);Key rules for multi-peripheral:
Each connection needs a unique
AccessAddressConnectionOffsetvalues must be staggered so active periods don't overlapActivePeriod× NumPeripherals ≤ConnectionIntervalActivePeriodmust be a multiple of 1.25ms — non-aligned values (e.g.,0.02/3 = 0.006667) cause infinite scheduling loops. Usefloor(CI/N / 0.00125) * 0.00125to round down.Config is a value class — safe to reuse and modify per iteration
Traffic Direction
addTrafficSource(central, traffic, DestinationNode=peripherals) — call on the sending node. Supports vector of destinations.
Connection Config Properties
| Property | Default | Constraint | Description |
|---|---|---|---|
ConnectionInterval | 0.02 | Multiple of 1.25ms, range [7.5ms, 4s] | Time between connection events |
ActivePeriod | 0.02 | ≤ ConnectionInterval | Active window within each event |
ConnectionOffset | 0 | ≥ 0 | Start time offset for this connection |
AccessAddress | "5DA44270" | 8 hex chars, unique per connection | Link identifier |
PHYMode | "LE1M" | "LE1M", "LE2M", "LE125K", "LE500K" | PHY data rate |
Algorithm | 1 | 1 or 2 | Channel selection algorithm |
UsedChannels | 0:36 | Subset of 0:36 | Active data channel set |
SupervisionTimeout | 1 | > 0 | Connection supervision timeout (s) |
MaxPDU | 251 | [27, 251] | Max PDU payload (Data Length Extension) |
HopIncrement | 5 | [5, 16] | Hop increment for Algorithm 1 |
InstantOffset | 6 | ≥ 6 | Instant offset in connection events |
PHYMode Behavior
The simulator models throughput differences between PHY modes but does NOT model coding gain as range extension (ReceiverSensitivity is node-level, not per-PHY). To model coded PHY range, run separate simulations with adjusted ReceiverSensitivity:
central125K = bluetoothLENode("central", Position=[0 0 0], ReceiverSensitivity=-112);
periph125K = bluetoothLENode("peripheral", Position=[400 0 0], ReceiverSensitivity=-112);ActivePeriod bounds: MinAP ≤ ActivePeriod ≤ ConnectionInterval. The minimum must accommodate one MaxPDU C→P transmission + T_IFS (150µs) + one P→C response + T_MCES within a connection event. It scales with both PHYMode and MaxPDU — slower PHY or larger PDU requires more air time. If violated, configureConnection throws an error with the exact threshold.
KPI Extraction
Always use kpi() for throughput — NOT statistics().LL.Throughput:
tput = kpi(central, peripheral, "throughput", Layer="LL"); % CORRECT
% Do NOT use statistics(node).LL.Throughput — kpi() is the standard reporting APIUse kpi(src, dst, metric, Layer=layer). For BLE ACL: throughput at "LL", latency at "App", PLR/PDR at both.
For App-layer throughput (not available via kpi): stats.App.ReceivedBytes * 8 / (simDuration * 1000) Kbps.
Critical Constraints
PacketSize≤MaxPDU(default 251, min 27) — runtime error if exceededActivePeriodminimum depends on PHYMode and MaxPDU — see PHYMode Behavior section aboveMid-sim channel update:
updateChannelList(central, channels, DestinationNode=peripheral)— only insidescheduleActioncallback. Seereferences/bluetooth-coexistence.md.
<!-- Copyright 2026 The MathWorks, Inc. -->
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
The author says: >=R2026a
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- MathWorks
- Publisher
- MathWorks (Official)
- Source
- matlab/matlab-agentic-toolkit · skills-catalog/wireless-communications/matlab-simulate-bluetooth-network · commit 2a7f215
- Licence
- BSD 2-Clause License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.md)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by MathWorks or MathWorks.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download matlab-simulate-bluetooth-network.zip