
TI CC1352/CC26x2 하드웨어용 Bluetooth 5 및 4.x LE 스니퍼로, 확장 광고, 모든 PHY 모드, MAC/RSSI 필터링 및 Wireshark와 호환되는 PCAP 내보내기 기능을 지원합니다.
Sniffle은 TI CC1352/CC26x2 하드웨어를 사용하는 Bluetooth 5 및 4.x (LE)용 스니퍼입니다.
Sniffle은 다음과 같은 유용한 기능을 제공합니다:
펌웨어를 위한 빌드 환경을 설정하는 수고를 하지 않으려면, UniFlash/DSLite를 사용하여 미리 빌드된 펌웨어 바이너리를 플래시하면 됩니다. 미리 빌드된 펌웨어 바이너리는 이 프로젝트의 GitHub 릴리스 탭에 있는 릴리스에 첨부되어 있습니다. 미리 빌드된 펌웨어를 사용할 때는 master 브랜치보다 뒤쳐진 펌웨어와의 호환성 문제를 피하기 위해 master 대신 해당 릴리스 태그에 해당하는 Python 코드를 사용하십시오.
다양한 Linux 배포판의 패키지 관리자를 통해 제공되는 arm-none-eabi-gcc는 종종 일부 헤더 파일이 부족하거나 링커 구성에 변경이 필요합니다. 최소한의 번거로움을 위해 위에 링크된 ARM GCC를 사용하는 것이 좋습니다. 미리 빌드된 실행 파일을 다운로드하여 압축을 풀기만 하면 됩니다.
TI SDK는 라이선스 계약에 동의하면 많은 소스 코드를 추출하는 실행 바이너리로 제공됩니다. Linux 및 Mac에서 기본 설치 디렉토리는 ~/ti/ 안에 있습니다. 이는 잘 작동하며, 제 makefiles는 이 경로를 예상하므로 여기서 기본값을 그대로 사용하는 것이 좋습니다. TI SysConfig 도구에도 동일하게 적용됩니다.
SDK가 추출되면 빌드 환경에 맞게 하나의 makefile을 편집해야 합니다. ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 (또는 SDK가 설치된 곳) 안에 imports.mak라는 makefile이 있습니다. Sniffle을 빌드하기 위해 여기서 설정해야 하는 유일한 경로는 GCC, XDC, cmake 및 SysConfig입니다. CCS 컴파일러는 필요하지 않습니다. 아래 diff를 참고로 하여 설치 위치에 맞게 조정하십시오.```
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
SDK 버전 8.30.01.01 기준으로, 최신 버전의 GCC (및 binutils)로 컴파일하려면,
링크 오류 "Unknown destination type (ARM/Thumb)" 및 "dangerous relocation: unsupported relocation"를 피하기 위해
SDK를 약간 수정해야 합니다.```
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
이 수정을 한 후에는 SDK를 다시 컴파일해야 합니다.``` cd ~/ti/simplelink_cc13xx_cc26xx_sdk_8_30_01_01 make build-gcc -j5
### DSLite 받기
DSLite는 XDS110 디버거용 TI의 명령줄 프로그래밍 및 디버그 서버 도구입니다. CC26xx 및 CC13xx Launchpad 보드에는 XDS110 디버거가 모두 포함되어 있습니다. 불행히도 TI는 독립 실행형 명령줄 DSLite 다운로드를 제공하지 않습니다. DSLite를 얻는 가장 쉬운 방법은 TI의 [UniFlash](http://www.ti.com/tool/download/UNIFLASH)를 설치하는 것입니다. Linux, Mac 및 Windows에서 사용할 수 있습니다. DSLite 실행 파일은 UniFlash 설치 디렉터리 기준 `deskdb/content/TICloudAgent/linux/ccs_base/DebugServer/bin/DSLite`에 있습니다. Linux에서 기본 UniFlash 설치 디렉터리는 `~/ti/` 안에 있습니다.
DSLite 실행 파일 디렉터리를 `$PATH`에 추가해야 합니다.
## 펌웨어 빌드
GCC, DSLite 및 SDK가 설치되어 작동 중이면 Sniffle 빌드는 간단합니다. `fw` 디렉터리로 이동하여 `make`를 실행하기만 하면 됩니다. SDK를 기본 디렉터리에 설치하지 않은 경우 makefile에서 `SIMPLELINK_SDK_INSTALL_DIR`을 편집해야 할 수 있습니다.
CC26x2R 이외의 Launchpad 변종용으로 빌드하거나 설치하는 경우 `PLATFORM=xxx`를 make 인수로 지정하거나 make를 호출하기 전에 환경 변수로 정의해야 합니다. `PLATFORM`에 지원되는 값은 펌웨어 makefile에서 확인할 수 있습니다. 다른 플랫폼용으로 빌드하기 전에 반드시 `make clean`을 수행하세요.
## 펌웨어 설치 (TI Launchpad 보드)
DSLite를 사용하여 (연결된) CC26x2R Launchpad에 Sniffle을 설치하려면 `fw` 디렉터리 내에서 `make load`를 실행합니다. 다른 Launchpad 모델의 경우 위에서 설명한 대로 make에 `PLATFORM` 인수를 지정해야 합니다. 또한 컴파일된 `sniffle.hex` 바이너리를 UniFlash GUI를 사용하여 플래시할 수 있습니다.
## 펌웨어 설치 (SONOFF USB 동글)
SONOFF CC2652P 동글(CP2102N USB/UART 브리지 장착)에 Sniffle을 설치하려면 [JelmerT/cc2538-bsl](https://github.com/JelmerT/cc2538-bsl) 유틸리티를 사용하여 내장 ROM 부트로더를 통해 다음 명령으로 펌웨어를 플래시하세요:```
python3 cc2538-bsl.py -p /dev/ttyUSB0 --bootloader-sonoff-usb -ewv sniffle_cc1352p1_cc2652p1.hex
2025년 1월 10일 기준, cc2538-bsl에는 Sonoff 동글에서 CC2562P 칩을 플래싱 후 리셋하지 못하게 하는 버그가 있습니다. 이에 대한 수정은 아직 병합되지 않은 풀 리퀘스트 173에 있습니다. 해당 풀 리퀘스트가 병합될 때까지 기다리는 동안 https://github.com/sultanqasim/cc2538-bsl에서 제 포크를 사용할 수 있습니다.
2022년에는 COVID-19 팬데믹으로 인한 칩 부족으로 인해, 일부 Sonoff CC2652P 동글이 921600 보드레이트로 제한된 CP2102(비N) USB/UART 브리지 칩으로 제조되었습니다. 이러한 동글을 가지고 있다면, 더 느린 921600 보드레이트를 사용하는 다른 펌웨어 이미지를 플래싱해야 합니다. 이 특별한 느린 보드레이트 빌드는 sniffle_cc1352p1_cc2652p1_1M.hex(빌드 변형 CC2652P1F_1M)로 명명되었습니다. 또한 Sniffle 유틸리티를 호출할 때 기본 보드레이트 2000000을 재정의하기 위해 -b 921600 옵션을 사용해야 합니다.
경고: 부트로더를 사용하여 잘못된 빌드 변형을 플래싱하지 마십시오. 그렇게 하면 기기가 손상되어 부트로더에서 잠길 위험이 있습니다. Sonoff CC2652P 기기의 경우 sniffle_cc1352p1_cc2652p1.hex 파일(CC2652P1F 빌드 변형) 또는 921600 보드레이트용 sniffle_cc1352p1_cc2652p1_1M.hex 파일(CC2652P1F_1M 빌드 변형)을 사용하십시오. 잘못된 변형을 플래싱하고 부트로더에서 잠긴 경우, JTAG/SWD를 사용하여 기기를 복구할 수 있습니다.
Electronic Cats는 펌웨어 로딩을 위한 Catnip Uploader 도구를 제공합니다. 자세한 내용은 저장소를 참조하십시오. 도구를 다운로드하고 다음 명령을 따르십시오:```bash
[ec@sniffle]$ git clone https://github.com/ElectronicCats/CatSniffer-Tools.git [ec@sniffle]$ cd CatSniffer-Tools/catnip_uploader [ec@sniffle]$ pip install -r requirements.txt