一,Makefile修改
BL_VERS_NUM=6.7.4.0 # # WAITING FOR KCONFIG { # CONFIG_BL_PCIE ?= n CONFIG_BL_SDIO ?= n CONFIG_BL_USB ?= y #这个蓝牙支持USB与SDIO两种方式 这个置为y表示用USB方式 CONFIG_BL_BTUSB ?= y #蓝牙和Wifi共用一个驱动 # one driver support wifi BT for usb interface CONFIG_WIFI_BT_USB_ONE_DRV ?= y #蓝牙和Wifi共用一个驱动 # user speicify the configure file location (tx_pwr.conf rf_para.conf) CONFIG_CFG_FILE_LOCATION_USER_DEFINE ?= n # configure usb use 2k rx buffer in driver CONFIG_BL_USB_RX_BUF_2K ?=n ## mp cmds CONFIG_BL_MP ?= y ## use combo fw for wifi/bt coexit CONFIG_FW_COMBO ?=y ## FW bin mode or convert to array mode CONFIG_BL_DNLD_FWBIN ?= y ## use cfg80211 wext standard ioctl to support wext mode CONFIG_SUPPORT_WEXT_MODE ?= n ## support wpa3 compat if apply patch to kernel (<4.17) to support wpa3 CONFIG_WPA3_SUPPORT ?=n export CONFIG_BL_MP export CONFIG_FW_COMBO export CONFIG_BL_DNLD_FWBIN CONFIG_DEBUG_FS ?= n # # mesh feature support CONFIG_MESH ?=n # # DEBUG OPTIONS CONFIG_BL_UM_HELPER_DFLT ?= "/dini/dini_bin/bl_umh.sh" # # FW ARCH: CONFIG_BL_SDM ?= n CONFIG_BL_TL4 ?= n CONFIG_BL_FW_RETRY ?= y CONFIG_BL_FPGA ?= n CONFIG_BL_RX_REORDER ?= y CONFIG_BL_RX_DEFRAG ?= y CONFIG_BL_BAND_5G ?= n # IPC version CONFIG_BL_OLD_IPC ?= n # TX/RX profiling CONFIG_BL_TRX_PROFILE ?= n # Support of P2P DebugFS for enabling/disabling NoA and OppPS CONFIG_BL_P2P_DEBUGFS ?= n # Polling interrupt CONFIG_BL_INT_POLLING ?= n ifeq ($(CONFIG_DEBUG_FS),y) CONFIG_BL_DEBUGFS ?= y export CONFIG_BL_DEBUGFS ?= y endif # # } // WAITING FOR KCONFIG # subdir-ccflags-$(CONFIG_MESH) += -DCONFIG_MESH subdir-ccflags-$(CONFIG_BL_DEBUGFS) += -DCONFIG_BL_DEBUGFS subdir-ccflags-$(CONFIG_BL_DEBUGFS) += -DCONFIG_BL_UM_HELPER_DFLT=\"$(CONFIG_BL_UM_HELPER_DFLT)\" subdir-ccflags-$(CONFIG_BL_P2P_DEBUGFS) += -DCONFIG_BL_P2P_DEBUGFS # FW VARS subdir-ccflags-y += -DNX_VIRT_DEV_MAX=2 subdir-ccflags-y += -DNX_REMOTE_STA_MAX=4 subdir-ccflags-y += -DNX_MU_GROUP_MAX=62 subdir-ccflags-y += -DNX_TXDESC_CNT=64 subdir-ccflags-y += -DNX_TX_MAX_RATES=4 subdir-ccflags-y += -DNX_CHAN_CTXT_CNT=3 subdir-ccflags-y += -DCONFIG_BL_FULLMAC subdir-ccflags-y += -DDEBUG # FW ARCH: subdir-ccflags-$(CONFIG_BL_SDM) += -DCONFIG_BL_SDM subdir-ccflags-$(CONFIG_BL_TL4) += -DCONFIG_BL_TL4 subdir-ccflags-$(CONFIG_BL_OLD_IPC) += -DCONFIG_BL_OLD_IPC subdir-ccflags-$(CONFIG_BL_FW_RETRY) += -DBL_FW_RETRY subdir-ccflags-$(CONFIG_BL_RX_REORDER) += -DBL_RX_REORDER subdir-ccflags-$(CONFIG_BL_RX_DEFRAG) += -DBL_RX_DEFRAG subdir-ccflags-$(CONFIG_BL_FPGA) += -DBL_FPGA subdir-ccflags-$(CONFIG_BL_BAND_5G) += -DBL_BAND_5G subdir-ccflags-$(CONFIG_BL_TRX_PROFILE) += -DBL_TRX_PROFILE # driver configure subdir-ccflags-$(CONFIG_BL_DNLD_FWBIN) += -DCONFIG_BL_DNLD_FWBIN subdir-ccflags-$(CONFIG_BL_MP) += -DCONFIG_BL_MP subdir-ccflags-$(CONFIG_FW_COMBO) += -DCONFIG_FW_COMBO subdir-ccflags-$(CONFIG_SUPPORT_WEXT_MODE) += -DCONFIG_SUPPORT_WEXT_MODE subdir-ccflags-$(CONFIG_BL_USB_RX_BUF_2K) += -DBL_USB_RX_BUF_2K subdir-ccflags-$(CONFIG_CFG_FILE_LOCATION_USER_DEFINE) += -DCFG_FILE_LOCATION_USER_DEFINE subdir-ccflags-$(CONFIG_BL_INT_POLLING) += -DBL_INT_POLLING subdir-ccflags-$(CONFIG_WPA3_SUPPORT) += -DBL_WPA3_COMPAT # BT USB driver: ifeq ($(CONFIG_WIFI_BT_USB_ONE_DRV),y) export CONFIG_BL_BTUSB = y export CONFIG_WIFI_BT_USB_ONE_DRV = y endif ifeq ($(CONFIG_BL_PCIE),y) obj-m += pcie/ endif ifeq ($(CONFIG_BL_SDIO),y) obj-m += sdio/ endif ifeq ($(CONFIG_BL_USB),y) obj-m += usb/ endif #obj-$(CONFIG_BL_PCIE) += pcie/ #obj-$(CONFIG_BL_SDIO) += sdio/ #obj-$(CONFIG_BL_USB) += usb/ ifeq ($(CONFIG_BL_BTUSB),y) export CONFIG_BL_BTUSB = y obj-m += btusb/ endif KBUILD_CFLAGS += -w all: modules mkdir -p .tmp #便于复制 cp btusb/*.ko .tmp cp usb/*.ko .tmp cp ../*.bin .tmp ARCH := arm CROSS_COMPILE := arm-linux-gnueabihf- KERNELDIR = /home/lee/project/Kernel/linux-5.15 #/lib/modules/$(shell uname -r)/build modules clean: @$(PWD)/mklink.sh $(MAKE) -C $(KERNELDIR) O=$(KBUILDDIR) M=$(PWD) $@ # $(MAKE) -C $(KERNELDIR) O=$(KBUILDDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) $@ @$(PWD)/mklink.sh clean
调用make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 会生成2个ko文件,linux启动的时候可以去加载
二,测试工具
在linux中所有的蓝牙测试工具是hci开头的
1. 蓝牙hcitool工具
hcitool
是一个用于配置和连接到蓝牙设备的命令行工具。以下是一些hcitool
的常用功能:
-
扫描蓝牙设备:
hcitool scan
命令可以用来扫描附近的蓝牙设备。这个命令会列出所有可见的蓝牙设备的地址和名称。 -
查看设备信息:
hcitool info <bdaddr>
命令可以用来查看指定蓝牙设备的信息,其中<bdaddr>
是设备的蓝牙地址。 -
连接到设备:
hcitool cc <bdaddr>
命令可以用来连接到指定的蓝牙设备。 -
断开设备连接:
hcitool dc <bdaddr>
命令可以用来断开与指定蓝牙设备的连接。 -
读取RSSI值:
hcitool rssi <bdaddr>
命令可以用来读取与指定蓝牙设备的RSSI值,这是一个表示信号强度的值。 -
设置设备名称:如前面所述,
hcitool name <hciX> <new_name>
命令可以用来设置HCI设备的名称
2. 蓝牙hciconfig工具
hciconfig
是一个用于配置和连接到蓝牙设备的命令行工具,可以用来开启关闭蓝牙:hciconfig hci0 on/off
3 无线 iw命令
iw
是一个低级工具,不支持WPA/WPA2安全性。要连接到使用WPA/WPA2安全性的WiFi热点,你需要使用wpa_supplicant
命令.
是一个在Linux系统中用于管理无线设备的命令行工具。它可以用来查看、配置和调试无线网络接口。以下是一些常见的”iw”命令的用途:
-
查看无线设备信息:
iw dev
命令可以列出所有的无线设备及其信息。 -
扫描无线网络:
iw dev wlan0 scan
命令可以扫描并列出所有可用的无线网络。这里的”wlan0″是无线设备的名称,可能会根据你的系统配置有所不同。 -
连接到无线网络:虽然”iw”命令可以用来手动连接到无线网络,但这通常需要一些额外的步骤,如认证和获取IP地址。因此,大多数情况下,我们会使用更高级的工具如”NetworkManager”或”wpa_supplicant”来管理无线连接。
-
调试无线连接:”iw”命令提供了许多用于调试无线连接的选项,如查看连接状态、信号强度等。