
Sniffer Bluetooth 5 e 4.x LE para hardware TI CC1352/CC26x2 com suporte para advertising estendido, todos os modos PHY, filtragem MAC/RSSI e exportação PCAP compatível com Wireshark.
O Sniffle é um sniffer para Bluetooth 5 e 4.x (LE) usando hardware TI CC1352/CC26x2.
O Sniffle tem uma série de recursos úteis, incluindo:
Se você não quiser passar pelo trabalho de configurar um ambiente de compilação para o firmware, você pode simplesmente gravar os binários de firmware pré-compilados usando UniFlash/DSLite. Os binários de firmware pré-compilados estão anexados aos lançamentos na aba de releases do GitHub deste projeto. Ao usar firmware pré-compilado, certifique-se de usar o código Python correspondente à tag de release, em vez do master, para evitar problemas de compatibilidade com firmware que está atrás do branch master.
O arm-none-eabi-gcc fornecido pelos gerenciadores de pacotes de várias distribuições Linux frequentemente não possui alguns arquivos de cabeçalho ou exige algumas alterações na configuração do linker. Para menos complicação, sugiro usar o ARM GCC linkado acima. Você pode simplesmente baixar e extrair os executáveis pré-compilados.
O SDK da TI é fornecido como um binário executável que extrai uma porção de código-fonte assim que você aceita o contrato de licença. No Linux e no Mac, o diretório de instalação padrão fica em ~/ti/. Isso funciona bem e meus makefiles esperam esse caminho, então sugiro apenas manter o padrão aqui. O mesmo se aplica à ferramenta TI SysConfig.
Depois que o SDK for extraído, você precisará editar um makefile para adequá-lo ao seu ambiente de compilação. Dentro de ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 (ou onde quer que o SDK tenha sido instalado) há um makefile chamado imports.mak. Os únicos caminhos que precisam ser definidos aqui para compilar o Sniffle são para GCC, XDC, cmake e SysConfig. Não precisamos do compilador CCS. Veja o diff abaixo como exemplo e adapte para onde você instalou as coisas.```
diff --git a/imports.mak b/imports.mak
index b2cf5bf59..389d1a7c3 100644
--- a/imports.mak
+++ b/imports.mak
@@ -18,14 +18,14 @@
-XDC_INSTALL_DIR ?= /home/username/ti/xdctools_3_62_01_15_core -SYSCONFIG_TOOL ?= /home/username/ti/ccs1270/ccs/utils/sysconfig_1.21.1/sysconfig_cli.sh +XDC_INSTALL_DIR ?= $(HOME)/ti/xdctools_3_62_01_15_core +SYSCONFIG_TOOL ?= $(HOME)/ti/sysconfig_1.21.1/sysconfig_cli.sh
-CMAKE ?= /home/username/cmake-3.21.3/bin/cmake +CMAKE ?= cmake PYTHON ?= python3
TICLANG_ARMCOMPILER ?= /home/username/ti/ccs1270/ccs/tools/compiler/ti-cgt-armllvm_3.2.2.LTS-0 -GCC_ARMCOMPILER ?= /home/username/arm-none-eabi-gcc/12.3.Rel1-0 +GCC_ARMCOMPILER ?= $(HOME)/arm_tools/arm-gnu-toolchain-14.3.rel1-x86_64-arm-none-eabi IAR_ARMCOMPILER ?= /home/username/iar9.50.2
A partir da versão 8.30.01.01 do SDK, para compilar com versões recentes do GCC (e do binutils),
é necessária uma pequena modificação no SDK para evitar erros de vinculação
"Unknown destination type (ARM/Thumb)" e "dangerous relocation: unsupported relocation".```
diff --git a/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s b/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
index 187cfd744..4cbf0d384 100644
--- a/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
+++ b/kernel/tirtos7/packages/ti/sysbios/family/arm/m3/Hwi_asm_gcc.s
@@ -236,6 +236,7 @@ lab$1:
@ user code has set the PRIMASK and not cleared it, or when single
@ stepping with interrupts disabled.
+.type ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe, %function
ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe:
b ti_sysbios_family_arm_m3_Hwi_interruptsAreDisabledButShouldNotBe
diff --git a/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s b/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
index 717f49c9a..1c83ed725 100644
--- a/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
+++ b/kernel/tirtos7/packages/ti/sysbios/family/arm/v8m/Hwi_asm_gcc.s
@@ -226,6 +226,7 @@ lab$1:
@ user code has set the PRIMASK and not cleared it, or when single
@ stepping with interrupts disabled.
+.type ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe, %function
ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe:
b ti_sysbios_family_arm_v8m_Hwi_interruptsAreDisabledButShouldNotBe
Após fazer esta modificação, você precisará recompilar o SDK.``` cd ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 make build-gcc -j5
### Obtendo o DSLite
O DSLite é a ferramenta de servidor de programação e depuração por linha de comando da TI para
depuradores XDS110. As placas Launchpad CC26xx e CC13xx incluem depuradores XDS110.
Infelizmente, a TI não fornece um download autônomo do DSLite para linha de comando.
A maneira mais fácil de obter o DSLite é instalar o [UniFlash](http://www.ti.com/tool/download/UNIFLASH)
da TI. Ele está disponível para Linux, Mac e Windows. O executável do DSLite estará
localizado em `deskdb/content/TICloudAgent/linux/ccs_base/DebugServer/bin/DSLite`
em relação ao diretório de instalação do UniFlash. No Linux, o diretório de instalação
padrão do UniFlash fica em `~/ti/`.
Você deve colocar o diretório do executável do DSLite no seu `$PATH`.
## Compilação do Firmware
Assim que o GCC, o DSLite e o SDK estiverem instalados e operacionais, compilar
o Sniffle deve ser simples. Basta navegar até o diretório `fw` e
executar `make`. Se você não instalou o SDK no diretório padrão, talvez seja necessário
editar `SIMPLELINK_SDK_INSTALL_DIR` no makefile.