Bird
Raised Fist0
IOT Protocolsdevops~10 mins

BLE advertising and scanning in IOT Protocols - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - BLE advertising and scanning
Start BLE Device
↓
Begin Advertising
↓
Broadcast Advertising Packets
↓
Nearby Devices Scan
↓
Receive Advertising Packets
↓
Process Packet Data
↓
Option: Connect or Continue Scanning
↓
Connect
↓
Continue Scanning
↓
Stop Advertising or Scanning
The BLE device starts advertising by broadcasting packets. Nearby devices scan and receive these packets, then decide to connect or keep scanning.
Execution Sample
IOT Protocols
Start advertising
Broadcast packet: DeviceName=Sensor1
Scanner detects packet
Scanner processes data
Scanner decides to connect
This sequence shows a BLE device advertising and a scanner detecting and processing the advertisement.
Process Table
StepActionDevice StatePacket ContentScanner StateResult
1Start advertisingAdvertising startedNoneIdleAdvertising begins
2Broadcast packetAdvertisingDeviceName=Sensor1IdlePacket sent
3Scanner starts scanningAdvertisingDeviceName=Sensor1ScanningScanner ready
4Scanner receives packetAdvertisingDeviceName=Sensor1ScanningPacket received
5Scanner processes packetAdvertisingDeviceName=Sensor1ProcessingData extracted
6Scanner decides to connectAdvertisingDeviceName=Sensor1ConnectingConnection initiated
7Advertising stopsAdvertising stoppedNoneConnectedAdvertising ended, connected
8EndConnectedNoneConnectedProcess complete
💡 Advertising stops after connection is initiated and established
Status Tracker
VariableStartAfter Step 2After Step 4After Step 6Final
Device StateIdleAdvertisingAdvertisingAdvertisingConnected
Packet ContentNoneDeviceName=Sensor1DeviceName=Sensor1DeviceName=Sensor1None
Scanner StateIdleIdleScanningConnectingConnected
Key Moments - 2 Insights
Why does the scanner state change from Idle to Scanning at step 3?
At step 3, the scanner starts actively listening for advertising packets, so its state changes to Scanning as shown in the execution_table.
Why does advertising stop at step 7?
Advertising stops at step 7 because the scanner decided to connect, so the device stops broadcasting to establish the connection, as seen in the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4. What is the scanner state?
AScanning
BIdle
CProcessing
DConnected
💡 Hint
Check the 'Scanner State' column at step 4 in the execution_table.
At which step does the device stop advertising?
AStep 6
BStep 7
CStep 5
DStep 8
💡 Hint
Look for 'Advertising stopped' in the 'Device State' column in the execution_table.
If the scanner never decides to connect, what would happen to the advertising state after step 6?
AAdvertising would stop
BDevice would shut down
CAdvertising would continue
DScanner would disconnect
💡 Hint
Refer to the variable_tracker for 'Device State' changes and the exit_note about advertising stopping only after connection.
Concept Snapshot
BLE Advertising and Scanning:
- Device broadcasts advertising packets to announce presence.
- Nearby devices scan to detect these packets.
- Scanner processes packets and may decide to connect.
- Advertising stops when connection starts.
- Scanning and advertising are separate but complementary actions.
Full Transcript
This visual execution shows how a BLE device starts advertising by broadcasting packets with its name. Nearby devices scan for these packets and receive them. Upon receiving, the scanner processes the data and decides whether to connect. If it chooses to connect, the advertising device stops broadcasting and establishes a connection. Variables like device state and scanner state change step-by-step, illustrating the flow from idle to connected states.

Practice

(1/5)
1. What is the main purpose of BLE advertising in Bluetooth Low Energy communication?
easy
A. To broadcast small packets of data repeatedly to nearby devices
B. To establish a full connection between devices
C. To encrypt data between devices
D. To scan for other devices' signals

Solution

  1. Step 1: Understand BLE advertising role

    BLE advertising sends small data packets repeatedly to announce presence.
  2. Step 2: Differentiate from scanning and connection

    Advertising is broadcasting, not scanning or connecting.
  3. Final Answer:

    To broadcast small packets of data repeatedly to nearby devices -> Option A
  4. Quick Check:

    Advertising = broadcast small data [OK]
Hint: Advertising means sending out info repeatedly [OK]
Common Mistakes:
  • Confusing advertising with scanning
  • Thinking advertising establishes connections
  • Assuming advertising encrypts data
2. Which of the following is the correct command to start BLE scanning using the Linux tool bluetoothctl?
easy
A. ble scan start
B. start scan
C. scan start
D. scan on

Solution

  1. Step 1: Recall bluetoothctl scan command

    The correct command to start scanning is exactly scan on.
  2. Step 2: Check other options for syntax

    Other options are incorrect commands or invalid syntax in bluetoothctl.
  3. Final Answer:

    scan on -> Option D
  4. Quick Check:

    bluetoothctl scan on = start scanning [OK]
Hint: Use exact command 'scan on' in bluetoothctl [OK]
Common Mistakes:
  • Using 'start scan' instead of 'scan on'
  • Typing commands not supported by bluetoothctl
  • Confusing scan commands with advertising commands
3. Given this Python snippet using a BLE library to scan devices:
devices = scanner.scan(5.0)
for dev in devices:
print(dev.addr)

What will this code output?
medium
A. Empty list because scan time is too short
B. List of device addresses found during 5 seconds scan
C. Error because scan() needs no arguments
D. List of device names found during 5 seconds scan

Solution

  1. Step 1: Understand scan() usage with timeout

    The scan method scans for devices for given seconds and returns device objects.
  2. Step 2: Identify printed attribute

    Printing dev.addr outputs device MAC addresses found.
  3. Final Answer:

    List of device addresses found during 5 seconds scan -> Option B
  4. Quick Check:

    scan(5.0) returns devices; dev.addr prints addresses [OK]
Hint: scan(timeout) returns devices; print dev.addr for addresses [OK]
Common Mistakes:
  • Thinking scan() takes no arguments
  • Confusing device address with device name
  • Assuming scan always returns empty list
4. You wrote this code to scan BLE devices but get no output:
scanner = Scanner()
devices = scanner.scan()
for dev in devices:
print(dev.addr)

What is the likely problem?
medium
A. print(dev.addr) is incorrect attribute
B. Scanner() class does not exist
C. Missing scan timeout argument causes no devices found
D. scan() method should be called with 'start' keyword

Solution

  1. Step 1: Check scan() method requirements

    scan() requires a timeout argument to specify scan duration.
  2. Step 2: Understand effect of missing timeout

    Without timeout, scan may return immediately with no devices.
  3. Final Answer:

    Missing scan timeout argument causes no devices found -> Option C
  4. Quick Check:

    scan() needs timeout to find devices [OK]
Hint: Always provide scan timeout to get results [OK]
Common Mistakes:
  • Omitting scan timeout argument
  • Assuming dev.addr is invalid
  • Thinking scan() uses 'start' keyword
5. You want to filter BLE scan results to only show devices advertising a specific service UUID. Which approach correctly applies this filter in Python?
hard
A. Use a list comprehension: [dev for dev in devices if '1234' in dev.getScanData()]
B. Check if '1234' in dev.addr for each device
C. Filter devices by comparing dev.name to '1234'
D. Use devices.filter('1234') method directly

Solution

  1. Step 1: Understand filtering by service UUID

    Service UUIDs appear in scan data, not in address or name.
  2. Step 2: Use list comprehension with getScanData()

    getScanData() returns advertised data; check if UUID '1234' is present.
  3. Final Answer:

    Use a list comprehension: [dev for dev in devices if '1234' in dev.getScanData()] -> Option A
  4. Quick Check:

    Filter by UUID in scan data using list comprehension [OK]
Hint: Filter devices by checking UUID in scan data list [OK]
Common Mistakes:
  • Checking UUID in device address
  • Filtering by device name instead of UUID
  • Using non-existent filter() method on devices
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard