Hello everyone,
TL;DR: Seeking advice on advertising on arbitrary channels + usage of
btvirt specifically function "send_adv_pkt".
I am currently working on my bachelor thesis and have the following
problem with I would like to request some advice:
I want to test several algorithms that try to improve the time it takes
to find an advertisement packet of another device. For this I not only
want to change the method of advertising, on channels 37-39 in
sequential order, to something else, but also send advertisement packets
on other channels.
My main difficulty currently is composed of trying to find out where the
actual advertisement packets are sent. Currently my best guess is, that
is is controlled by the firmware of my raspberry pi that I am using
(specific model below), because I could not find anything within the
bluez stack. Maybe one of you has more knowledge on where I have to search.
What I was able to find was the btvirt tool, which could help with my
problem. There I found in the file "le.c" in function
"adv_timeout_callback" another function called "send_adv_pkt". Sadly
while trying out btvirt and clever usage of some print statements I
could not see the function be executed. Maybe someone can give me some
advice on that, because this function should do exactly what I am
looking for. It could be that I was just using the tool incorrectly in
which case it would be great if somebody could tell me how to use it. My
methodology was: 1. "sudo ./btvirt -L -l2 -d" to create 2 new local LE
controller. 2. Start advertisement using hcitool "sudo hcitool -i hci2
cmd 0x08 0x000a 01". The advertisement is correct and the other local
controller can connect to the first one.
My current equipment is:
Device: Raspberry Pi 3 Model B+
Kernel + OS: Linux raspberrypi 5.15.61-v7+ #1579 SMP Fri Aug 26
11:10:59 BST 2022 armv7l GNU/Linux
Bluez version: 5.65
Kind regards
Marvin Sinnwell