Linux(5)WIFI/BT调试笔记

简介: Linux(5)WIFI/BT调试笔记

0x01 调试WIFI/BT

1. 确认几个关键点

rk_linux\kernel\drivers\net\wireless\rockchip_wlan\rkwifi\rk_wifi_config.c

#define VENDOR_ETC_FIRMWARE "/vendor/etc/firmware/"
#define SYSTEM_ETC_FIRMWARE "/system/etc/firmware/"
 
if (chip == WIFI_AP6256) {
    sprintf(fw, "%s%s", ANDROID_FW_PATH, "fw_bcm43456C5_ag.bin");
    sprintf(nvram, "%s%s", ANDROID_FW_PATH, "nvram_ap6256.txt");
}

rk_linux/kernel/arch/arm64/boot/dts/rockchip$ vi rkxxxx-wr-lp4-linux.dts

rk_linux/kernel$ vi arch/arm64/configs/rockchip_linux_defconfig

CONFIG_AP6XXX=m

CONFIG_AP6XXX涉及的文件。

rk_linux/kernel$ grep -rn "CONFIG_AP6XXX"
drivers/net/wireless/rockchip_wlan/Makefile:2:obj-$(CONFIG_AP6XXX)      += rkwifi/
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/Makefile:119:obj-$(CONFIG_AP6XXX) += bcmdhd.o
drivers/net/wireless/rockchip_wlan/rkwifi/Makefile:5:obj-$(CONFIG_AP6XXX) += bcmdhd/
drivers/net/wireless/rockchip_wlan/wifi_sys/rkwifi_sys_iface.c:188:#ifdef CONFIG_AP6XXX

2. 拷贝驱动文件

到external/rkwifibt/firmware/broadcom/AP6256/wifi目录 , 拷贝出fw_bcm43456c5_ag.binWIFI驱动文件 , nvram_ap6256.tx蓝牙驱动文件, 到主板上/vendor/etc/firmware/ 目录 , 没有则新建。

rk_linux/external/rkwifibt/firmware/broadcom/AP6256/wifi$ ls
fw_bcm43456c5_ag.bin  nvram_ap6256.tx

3. 加载bcmdhd驱动

lsmod //查看当前所有加载的ko
insmod  bcmdhd.ko  //在板子里 敲命令手动加载bcm驱动
rrmod   bcmdhd.ko //移除bcm驱动

正常情况下手动加载成功后lsmod会出现bcmdhd, 表示加载成功。

4. 命令行连接WiFi

nmcli device wifi list #查看wifi列表
nmcli dev wifi connect  WIFINAME  password WIFIPWD #连接wifi

敲完nmcli device wfi list正常情况下会出现wifi列表 , 如果没有出现可能是前面步骤2没有拷贝 , 或者本身模块问题。

5. bcmdhd自动加载的问题

bcmdhd默认m编译出ko文件 , 但是不会拷贝到文件系统里 , 需要通过脚本打包到rootfs里。

其次 如果要自动加载 , 需要通过命令行脚本 在开机启动的时候执行 insmod bcmdhd.ko 。

已尝试过把bcmdhd改成y , wifi 驱动加载不出来。

0x02 调试BT

1.安装蓝牙协议栈

(确保)安装 bluez,该软件包提供蓝牙的协议栈。

linux可以了 , 用的最新wifi/bt固件 , gpio改了 , 然后要执行

apt install bluez

2.调试蓝牙命令

# 蓝牙下电
echo 0 > /sys/class/rfkill/rfkill0/state
sleep 1
# 蓝牙上电
echo 1 > /sys/class/rfkill/rfkill0/state
sleep 1
# 指定串口
brcm_patchram_plus1 --enable_hci --no2bytes --tosleep 200000 --baudrate 9600 --patchram /system/etc/firmware/BCM4345C5.hcd /dev/ttyS0 &
sleep 5
chmod 777 /dev/ttyS0
chmod 777 /dev/ttyS4
sleep 3
# 打开hci0 
hciconfig hci0 up
 
执行: cd /opt
执行: rz > 导入brcm_patchram_plus1文件(这玩意是我编译出来的)
执行: chmod 777 /usr/bin/brcm_patchram_plus1
执行: ./brcm_patchram_plus1 --enable_hci --no2bytes --tosleep 200000 --baudrate 9600 \
        --patchram /system/etc/firmware/BCM4345C5.hcd /dev/ttyS0 &
(
必须出现以下打印
###AMPAK FW Auto detection patch version = [v1.1 20161117]###
FW folder path = /system/etc/firmware
proc_resetchip id = BCM4345C5
要把system/目录下所有777
需要执行这2行才能看到打印结果 ,
 echo 0 > /sys/class/rfkill/rfkill0/state
 echo 1 > /sys/class/rfkill/rfkill0/state
)
执行: hciconfig hci0 up(要出现hci0设备,没有则是有问题)
执行: bluetoothctl 进入蓝牙模式后
  输入power on
  输入scan on
  输入discoverable on
  输入pair on
  输入完以上---可以在手机上看到ubuntu.server的蓝牙 点击这个名字 匹配 , 会提示输入yes/no 输入yes即可连接
  输入devices 可以查看附近设备
 
---其他命令
sudo systemctl start bluetooth
sudo systemctl enable bluetooth
 
 
 
bluetoothctl
进入[bluetooth]# 模式
[bluetooth]# help
Available commands:
  list                       List available controllers
  show [ctrl]                Controller information
  select <ctrl>              Select default controller
  devices                    List available devices
  paired-devices             List paired devices
  power <on/off>             Set controller power
  pairable <on/off>          Set controller pairable mode
  discoverable <on/off>      Set controller discoverable mode
  agent <on/off/capability>  Enable/disable agent with given capability
  default-agent              Set agent as the default one
  set-scan-filter-uuids [uuid1 uuid2 ...] Set scan filter uuids
  set-scan-filter-rssi [rssi] Set scan filter rssi, and clears pathloss
  set-scan-filter-pathloss [pathloss] Set scan filter pathloss, and clears rssi
  set-scan-filter-transport [transport] Set scan filter transport
  set-scan-filter-clear      Clears discovery filter.
  scan <on/off>              Scan for devices
  info [dev]                 Device information
  pair [dev]                 Pair with device
  trust [dev]                Trust device
  untrust [dev]              Untrust device
  block [dev]                Block device
  unblock [dev]              Unblock device
  remove <dev>               Remove device
  connect <dev>              Connect device
  disconnect [dev]           Disconnect device
  list-attributes [dev]      List attributes
  select-attribute <attribute> Select attribute
  attribute-info [attribute] Select attribute
  read                       Read attribute value
  write <data=[xx xx ...]>   Write attribute value
  notify <on/off>            Notify attribute value
  register-profile <UUID ...> Register profile to connect
  unregister-profile         Unregister profile
  version                    Display version
  quit                       Quit program
 
 
 
root@ubuntu:/mnt/usb# systemctl status bluetooth.service
● bluetooth.service - Bluetooth service
     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor pre>
     Active: active (running) since Sun 2023-01-29 07:32:08 UTC; 1h 18min ago
       Docs: man:bluetoothd(8)
   Main PID: 436 (bluetoothd)
     Status: "Running"
     CGroup: /system.slice/bluetooth.service
             └─436 /usr/lib/bluetooth/bluetoothd


相关文章
|
11天前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
11天前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
13天前
|
网络协议 算法 Linux
【Linux】深入探索:Linux网络调试、追踪与优化
【Linux】深入探索:Linux网络调试、追踪与优化
|
9天前
|
编解码 Linux 5G
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
AVS3,中国制定的第三代音视频标准,是首个针对8K和5G的视频编码标准,相比AVS2和HEVC性能提升约30%。uavs3d是AVS3的解码器,支持8K/60P实时解码,且在各平台有优秀表现。要为FFmpeg集成AVS3解码器libuavs3d,需从GitHub下载最新源码,解压后配置、编译和安装。之后,重新配置FFmpeg,启用libuavs3d并编译安装,通过`ffmpeg -version`确认成功集成。
24 0
FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器
|
13天前
|
NoSQL Java Linux
linux笔记
linux笔记
15 0
|
13天前
|
存储 运维 Java
Linux笔记02 —— Shell补充
Linux笔记02 —— Shell补充
35 2
|
13天前
|
安全 Linux Shell
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
23 1
|
13天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
35 3
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
13天前
|
编解码 Linux
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在《FFmpeg开发实战》一书中,介绍了如何在Linux环境下为FFmpeg集成libopus和libvpx,以支持WebM格式的Opus和VP8/VP9编码。首先,下载并安装libopus。接着,下载并安装libvpx。最后,在FFmpeg源码目录下,重新配置FFmpeg,启用libopus和libvpx,编译并安装。通过`ffmpeg -version`检查版本信息,确认libopus和libvpx已启用。
40 1
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
|
13天前
|
编解码 Linux
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
在Linux环境下,为FFmpeg添加对AAC、MP3、OGG和AMR音频格式的支持,需安装libogg、libvorbis和opencore-amr库。首先,从官方源下载各库的最新源码,如libogg-1.3.5、libvorbis-1.3.7和opencore-amr-0.1.6,然后解压并依次执行`./configure`、`make`和`make install`进行编译安装。接着,在FFmpeg源码目录中,使用`./configure`命令重新配置,并重新编译安装FFmpeg。最后,验证FFmpeg版本信息确认已启用ogg和amr支持。
30 0
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr