当前位置: 首页 > news >正文

RK3588 桌面系统配置WiFi和蓝牙配置

桌面右上角点击,打开选项,找到WiFi的选择网络或者WiFi设置

未找到该图片

在弹出的窗口中选择需要连接的WiFi,然后右下角选择连接,然后输入WiFi密码即可连接。

未找到该图片

25.4. 命令行连接wifi路由器

命令行配置wifi的方法有很多,下面介绍几种常用的wifi工具

  • nmtui 图形化的NetworkManager网络配置

  • nmcli(NetworkManager Command Line) 系统官方使用的工具 – 桌面的wifi控制由该工具提供, 特点:简单好用

  • wpa_cli(开源社区的网络工具)比较多人使用的wifi工具 特点:资料多,配置后简单快捷

25.4.1. nmtui

  • 进入图形配置

1
sudo nmtui
  • 移动键盘方向键移动到 Active a connection 按 Enter键 进入wifi设置

../../../_images/nmtui-13.png

  • 然后移动方向键到你要连接的wifi,按 Enter键

  • 如果是连接未连接的有密码的热点则进入输入密码界面

  • 如果是没有密码或者已连接的热点则连接热点或者取消连接热点

../../../_images/nmtui-wifi-1.png

注解

使用有些网卡(如rtl8821cu),系统会生成两个网络接入点p2p0和wlan0, wifi使用哪个节点连接都可以,使用p2p0会方便设置, 使用wlan0会比较符合广大网友们的习惯

第一次连接有密码的热点时,如图下

../../../_images/nmtui-wifi-2.png

  • 输入密码后,就可以看到wifi已连接

../../../_images/nmtui-wifi-3.png

如果想要断开wifi,在已连接的状态按下 Enter键 就可以断开连接

25.4.2. nmcli

 123456789
10
11
12
# 列出可用的wifi接入点, list可以省略
sudo nmcli dev wifi list# 连接热点PPP, 连接成功后,就会自动生成配置文件,以后要再连接,可以使用nmcli connectio up mySSID命令了
sudo nmcli dev wifi connect PPP password '00000000' ifname wlan0#如果连接成功后,下次想再连接,就可以使用
sudo nmcli dev wifi connect PPP#更多nmcli的命令可以使用来查看
nmcli help
nmcli OBJECT help

nmcli命令组成

nmcli [OPTIONS] OBJECT { COMMAND | help }

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
OPTIONS-o[verview]                                    overview mode (hide default values)-t[erse]                                       terse output-p[retty]                                      pretty output-m[ode] tabular|multiline                      output mode-c[olors] auto|yes|no                          whether to use colors in output-f[ields] <field1,field2,...>|all|common       specify fields to output-g[et-values] <field1,field2,...>|all|common   shortcut for -m tabular -t -f-e[scape] yes|no                               escape columns separators in values-a[sk]                                         ask for missing parameters-s[how-secrets]                                allow displaying passwords-w[ait] <seconds>                              set timeout waiting for finishing operations-v[ersion]                                     show program version-h[elp]                                        print this help#OBJECT可以用缩写表示OBJECTg[eneral]       NetworkManager's general status and operationsn[etworking]    overall networking controlr[adio]         NetworkManager radio switchesc[onnection]    NetworkManager's connectionsd[evice]        devices managed by NetworkManagera[gent]         NetworkManager secret agent or polkit agentm[onitor]       monitor NetworkManager changesCommand 可以通过 nmcli OBJECT help 来获得

下列列举部分常用的命令

nmcli常用命令

命令

作用

nmcli n

显示 NetworkManager 是否接管网络设置

nmcli n on

设定 NetworkManager 接管网络

nmcli n off

取消 NetworkManager 接管网络

nmcli c status

查看连接简略信息

nmcli c show

查看连接详细信息

nmcli c up/down ifname

启动/关闭指定连接(ifname 网卡)

nmcli c show(s) ifname

查看ifname网卡的连接详细信息

nmcli c delete(de) ens33

删除指定连接

nmcli d status

查看设备简略信息

nmcli d show

查看设备详细信息

nmcli d sh ens33

显示某一特定设备的详细信息

nmcli d connect(c) ens33

连接设备

nmcli d disconnect(c) ens33

断开设备

1
2
3
4
5
6
7
#先列出连接的配置,eth0现在连接的是Wired connection 1root@lubancat:~# nmcli c s
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  35ecb023-3194-3edb-bf90-4198f82329a8  ethernet  eth0
Wired connection 2  45f86cca-f8df-376e-8aad-37e10d2a65ce  ethernet  --
aEBF_Guest          fb1d506e-6dc7-4c5b-a4ce-339f3349d26d  wifi      wlan0

然后对Wired connection 1进行修改

 123456789
10
11
12
13
#静态ip设置
sudo nmcli c modify 'aEBF_Guest' [ + | - ]选项 选项值  # 或sudo nmcli c m 'aEBF_Guest' ipv4.address 192.168.103.172/24     # 修改 IP 地址和子网掩码
sudo nmcli c m 'aEBF_Guest' ipv4.method manual                  # 修改为静态配置,默认是 auto
sudo nmcli c m 'aEBF_Guest' ipv4.gateway 192.168.103.254        # 修改默认网关
sudo nmcli c m 'aEBF_Guest' ipv4.dns 8.8.8.8                        # 修改 DNS
sudo nmcli c m 'aEBF_Guest' +ipv4.dns 114.114.114.114           # 添加一个 DNS
sudo nmcli c m 'aEBF_Guest' ipv6.method disabled                            # 将 IPv6 禁用
sudo nmcli c m 'aEBF_Guest' connection.autoconnect yes              # 开机启动注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!
用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例):

详细的文档连接

  • 《nmcli命令用法是什么》

  • 《Linux中nmcli命令详解》

25.4.3. wpa_cli

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#使能wifi
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf#进入专用控制台,默认选择wlan0
wpa_cli#添加网络,获取网络id号
add_network#假设id号为2
#设置需要连接的wifi名称
set_network 2 ssid "PPP"#设置wifi的安全性:wpa
set_network 2 key_mgmt WPA-PSK#设置需要连接的密码
set_network 2 psk "88888888"#使能wifi
enable_network 2#保存wifi信息
save_config#列出所有在列表里的wifi以及序号
list_networks#根据序号选择你要连接的wifi
select_network 2#查看连接的WiFi
status#退出
quit#自动获取IP
dhclient wlan0
wpa_cli其他用法

语句

功能

举例

quit

退出模式

quit

scan

扫描wifi

scan

scan_results

查看扫描结果

scan_results

new_password

更换新密码

new_password 1 “密码”

disale_network

禁止WiFi

disale_network 2

list_networks

列出所有在列表里的wifi以及序号

list_networks

select_network

根据序号选择你要连接的wifi

select_network 2

remove_network

移除你不想要的wifi

remove_network 2

disconnect

停止wifi的连接

disconnect

reconnect

重新连接wifi

reconnect

help

查看更多的选项

help

当然也可以直接修改配置文件 /etc/wpa_supplicant/wpa_supplicant.conf

可以按照格式添加,然后在使用wpa_cli工具进行配置

1
2
3
4
5
6
7
8
ctrl_interface=/var/run/wpa_supplicant
update_config=1network={ssid="PPP"psk="88888888"key_mgmt=WPA-PSK
}

25.4.4. 开启无线热点

25.4.4.1. nmcli

(NetworkManager Command Line)

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
热点-72Mbps WIFI4
#使用该方法只能创建出WIFI4的热点,理论速率可达72Mbps,实测速率在50Mbps,换算大约6MB/s#5g
sudo nmcli device wifi hotspot ifname wlan0 con-name AP-5G ssid LubanCat-AP-5G band a channel 36 password 88888888#2.4g
sudo nmcli device wifi hotspot ifname wlan0 con-name AP-2.4G ssid LubanCat-AP-2.4G band bg channel 6 password 88888888#band 无线协议 bg-2.4G a-5G
#channel 信道 可百度科普修改使用,可以下载 “网速管家”wifi分析中查看
#无线名字 - ssid
#密码 - password
#con-name 连接名,如果首次创建成功后可以直接使用sudo nmcli device wifi hotspot#查看热点信息以及密码
sudo nmcli device wifi show-password
#如果需要连接外网,即设备可以通过wifi连接到互联网上,就需要设置转发(假设网口能够连接互联网)
echo 1 > /proc/sys/net/ipv4/ip_forward
#如果eth1联网的话,可以把eth0换成eth1
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
25.4.4.2. hostapd

使用该方法可能稳定性会比较差,有时可能会断连的情况 下面是两个频率的wifi热点理论速率 - 2.4G - 72Mbps - 5G - 150Mps(802.11.n)单天线最大-150Mps

实测速率

  • 2.4G - 50Mbps 大约6MB/s

  • 5G - 120Mbps 大约15MB/s

25.4.4.2.1. 安装依赖
1
2
#下载工具hostapd 和 dhcpd
sudo apt install hostapd isc-dhcp-server
25.4.4.2.2. 创建配置文件
  • 2.4G详细的配置 2G.conf

  • 5G详细的配置 5G.conf

  • hostapd配置里每个详细数据的详解 hostapd.conf

修改 /etc/hostapd/hostapd.conf 文件

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sudo vi /etc/hostapd/hostapd.conf
#简化版(5G)interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=LuBanCat-5G
channel=36
wpa=2
wpa_passphrase=passworddriver=nl80211
beacon_int=100
hw_mode=a
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400#简化版(2.4G)interface=wlan0
ctrl_interface=/var/run/hostapd
ssid=LuBanCat-2.4G
channel=6
wpa=2
wpa_passphrase=passworddriver=nl80211
beacon_int=100
hw_mode=g
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
max_num_sta=8
wpa_group_rekey=86400

修改 /etc/dhcp/dhcpd.conf

 123456789
10
#在末尾加入以下内容:subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1,114.114.114.114,8.8.8.8;
}其中114.114.114.114是全国通用DNS地址,8.8.8.8则是全球通用DNS地址
25.4.4.2.3. 设置脚本

用于关闭sta模式,打开ap模式以及关闭ap模式,打开sta模式

  • 关闭sta模式,打开ap模式

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
#创建脚本
vi ap-start.sh
#给予权限
sudo chmod +x ap-start.sh#!/bin/bash
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 开启防火墙NAT转发(如果本机使用eth1上网,则把eth0改为eth1)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 关闭NetworkManager对无线网卡的控制
nmcli d disconnect wlan0
# 设置并启动无线网卡
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
# 解锁无线设备,可以用rfkill list查看解锁结果.
rfkill unblock wlan
# 睡眠6秒,待rfkill解锁生效
sleep 6s
# 启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程ps -ef|egrep "dhcpd|hostapd"
nohup hostapd /etc/hostapd/hostapd.conf >/home/cat/hostapd.log 2>&1 &
dhcpd wlan0 -pf /var/run/dhcpd.pid
ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd"
  • 关闭ap模式,打开sta模式

 123456789
10
11
#创建脚本
vi ap-stop.sh
#给予权限
sudo chmod +x ap-stop.sh#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
nmcli d connect wlan0
nmcli d disconnect wlan0
nmcli d connect wlan0

当我们打开ap模式时,需要有3个进程,不然会开启失败

未找到图片08|

如果失败可以使用

1
2
cat /home/cat/hostapd.log
#查看失败的原因

可以根据失败原因到百度上找出问题.

桌面系统配置蓝牙

默认蓝牙是打开的状态,点击右上角选项找到蓝牙设置

未找到图片08|

在打开的界面中,找到需要连接的蓝牙设备,然后双击点击即可连接。

未找到图片08|

如果连接的设备需要配对,则会弹出PIN码确认窗口,需要板卡和连接的设备都进行确认,确认后即可连接。

未找到图片08|

26.2. 命令行配置蓝牙

使用命令行配置蓝牙,我们需要使用工具—-bluetoothctl

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 进入bluetoothctl命令行
bluetoothctl
# 进入bluetoothctl命令行后,类似:[bluetooth]#
# Controller代表arm板上的蓝牙设备,Device代表蓝牙耳机
# 按如下步骤初始化蓝牙设备,并连接蓝牙耳机
# 查看帮组
helppower on
agent on
default-agent
# 启动扫描
scan on
# 假如蓝牙耳机地址为:04:8C:9A:F2:54:4B
trust 04:8C:9A:F2:54:4B
# 配对
pair 04:8C:9A:F2:54:4B
# 连接
connect 04:8C:9A:F2:54:4B# 查看蓝牙耳机信息
info 04:8C:9A:F2:54:4B# 断开连接
disconnect 04:8C:9A:F2:54:4B
# 不想自动连接上蓝牙耳机,可以删除配对信息
remove 04:8C:9A:F2:54:4B

更多关于命令行蓝牙连接,可参考 arm 使用bluetoothctl连接蓝牙耳机-CSDN博客

26.3. 蓝牙串行通信

首先安装相关的工具

1
2
3
4
#安装工具
sudo apt update
sudo apt install bluez util-linux
sudo apt install bluez bluez-tools bluez-firmware

26.3.1. 查看蓝牙信息

 123456789
10
11
12
13
14
15
16
17
18
19
20
#执行命令
hciconfig -a#打印信息如下
hci0:   Type: Primary  Bus: USBBD Address: 2C:C3:E6:63:42:57  ACL MTU: 1021:8  SCO MTU: 255:12UP RUNNING PSCANRX bytes:4845 acl:0 sco:0 events:434 errors:0TX bytes:55369 acl:0 sco:0 commands:434 errors:0Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3Link policy: RSWITCH HOLD SNIFF PARKLink mode: SLAVE ACCEPTName: 'lubancat'Class: 0x3c0000Service Classes: Rendering, Capturing, Object Transfer, AudioDevice Class: Miscellaneous,HCI Version: 4.2 (0x8)  Revision: 0x75b8LMP Version: 4.2 (0x8)  Subversion: 0xf098Manufacturer: Realtek Semiconductor Corporation (93)

26.3.2. 修改配置文件

修改配置文件/etc/systemd/system/dbus-org.bluez.service

1
sudo vim /etc/systemd/system/dbus-org.bluez.service

修改如下,/usr/libexec/bluetooth/bluetoothd这个路径不同系统可能会不一样,按原本的路径即可

1
2
ExecStart=/usr/libexec/bluetooth/bluetoothd -C
ExecStartPost=/usr/bin/sdptool add SP

26.3.3. 重启蓝牙服务

1
2
sudo systemctl daemon-reload
sudo /etc/init.d/bluetooth restart

26.3.4. 取消确认蓝牙pin码(非必须)

新建/usr/lib/systemd/system/bt-agent.service 写入以下内容

 123456789
10
11
[Unit]
Description=Bluetooth Auth Agent[Service]
Type=simple
ExecStartPre=/bin/sleep 15
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
User=root[Install]
WantedBy=bluetooth.target

启动服务,重启系统

1
2
3
sudo systemctl start bt-agent
sudo systemctl enable bt-agent
reboot

26.3.5. 配置蓝牙可以被发现

1
sudo hciconfig hci0 piscan

26.3.6. 连接蓝牙设备

1
sudo rfcomm watch hci0 &

在前面使用 hciconfig -a 命令可以看到蓝牙的名字叫lubancat,地址是2C:C3:E6:63:42:57(不同蓝牙会不一样)。我们打开手机上的蓝牙软件,比如笔者使用的是——蓝牙调试宝,一般在手机应用商店可以下载

打开软件,可以搜索到蓝牙设备,然后进行连接,连接成功,终端会打印提示信息:

1
2
Connection from A8:C5:6F:0D:ED:AE to /dev/rfcomm0
Press CTRL-C for hangup

此时/dev目录下也有一个rfcomm0设备,可以通过下面命令查看:

1
2
#执行命令
ls /dev/rfcomm0

我们可以通过下面命令发送一些数据到手机的蓝牙调试工具上:

1
echo "6666666" > /dev/rfcomm0

可以看到手机的蓝牙调试工具上已经收到了相关的数据,

当然手机也可以发送数据到开发板上,比如我们发送一些ASCII码字符串到开发板上, 然后在终端通过cat命令去读取这些数据,可以看到通信是正常的:

1
2
3
4
5
6
7
 #执行命令
cat /dev/rfcomm0#打印信息
12
111
6666

未找到图片08|

使用bluetoothctl连接蓝牙耳机

1.安装 bluez,这个软件包提供蓝牙的协议栈;

2.安装 bluez-utils, 其提供 bluetoothctl 工具;

3.插入USB蓝牙后之后,可以使用lsusb命令查看USB设备;

4.运行hciconfig可以看到USB蓝牙;

第一步,先确保pulseaudio已经启动

# 查看pulseaudio是否在运行
pgrep -af pulseaudio
# 或者
ps -A |grep pulseaudio
# 如果没运行以前要先启动pulseaudio,如果连接蓝牙耳机时,就会直接返回连接失败
# 参数说明:--start   Start the daemon if it is not running
# pulseaudio -h    可以查看帮助
/usr/bin/pulseaudio --start
  

pulseaudio --kill

 

PulseAudio 5.x 开始默认支持 A2DP。 确保这些包已经安装Install: pulseaudio-alsa, pulseaudio-bluetooth, bluez, bluez-libs, bluez-utils, bluez-firmwareAUR. 如果没有安装 pulseaudio-bluetooth,蓝牙设备在配对完成后,连接会失败,而且你不会得到任何有用的提示。

第二步,启动bluetoothd服务

# 我使用的arm板是通过如下命令启动bluetoothd
/etc/init.d/bluetooth start


/etc/init.d/bluetooth文件内容如下:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DESC=bluetooth
 
DAEMON=/usr/libexec/bluetooth/bluetoothd
 
# If you want to be ignore error of "org.freedesktop.hostname1",
# please enable NOPLUGIN_OPTION.
# NOPLUGIN_OPTION="--noplugin=hostname"
NOPLUGIN_OPTION=""
SSD_OPTIONS="--oknodo --quiet --exec $DAEMON -- $NOPLUGIN_OPTION"
 
test -f $DAEMON || exit 0
 
# FIXME: any of the sourced files may fail if/with syntax errors
test -f /etc/default/bluetooth && . /etc/default/bluetooth
test -f /etc/default/rcS && . /etc/default/rcS
 
set -e
 
case $1 in
  start)
    echo "Starting $DESC"
 
    if test "$BLUETOOTH_ENABLED" = 0; then
        echo "disabled. see /etc/default/bluetooth"
        exit 0
    fi
 
    start-stop-daemon --start --background $SSD_OPTIONS
    echo "${DAEMON##*/}"
 
  ;;
  stop)
    echo "Stopping $DESC"
    if test "$BLUETOOTH_ENABLED" = 0; then
        echo "disabled."
        exit 0
    fi
    start-stop-daemon --stop $SSD_OPTIONS
    echo "${DAEMON}"
  ;;
  restart|force-reload)
    $0 stop
    sleep 1
    $0 start
  ;;
  status)
     pidof ${DAEMON} >/dev/null
     status=$?
        if [ $status -eq 0 ]; then
                 echo "bluetooth is running."
        else
                echo "bluetooth is not running"
        fi
        exit $status
   ;;
   *)
    N=/etc/init.d/bluetooth
    echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
    exit 1
    ;;
esac
 
exit 0
 
# vim:noet

 

第三步,使能USB蓝牙设备

hciconfig hci0 up

 可以试一下扫描蓝牙设备

# 可以使用如下命令扫描当前可见的蓝牙,不过似乎看到有人说这个命令有些过时,但是我觉得挺好用的
hcitool scan
# 使用l2ping可以像ping命令一样检查蓝牙是否能在线
# 蓝牙地址比如:E3:28:E9:24:21:07
l2ping 蓝牙地址
# sdptool browse查看蓝牙可用服务
sdptool browse E3:28:E9:24:21:07


第四步,使用bluetoothctl连接蓝牙耳机

# 进入bluetoothctl命令行
bluetoothctl
# 进入bluetoothctl命令行后,类似:[bluetooth]#
# Controller代表arm板上的蓝牙设备,Device代表蓝牙耳机
# 按如下步骤初始化蓝牙设备,并连接蓝牙耳机
# 查看帮组
help

power on
agent on
default-agent 
# 启动扫描
scan on 
# 假如蓝牙耳机地址为:E3:28:E9:24:21:07
trust E3:28:E9:24:21:07
# 配对
pair E3:28:E9:24:21:07
# 连接
connect E3:28:E9:24:21:07
  
# 查看蓝牙耳机信息
info E3:28:E9:24:21:07

# 断开连接
disconnect E3:28:E9:24:21:07
# 不想自动连接上蓝牙耳机,可以删除配对信息
remove E3:28:E9:24:21:07

 

不出什么问题,则已经连接上蓝牙耳机了。

如果发现连接上了但是蓝牙耳机的音频用不了要做如下检查。

# 查看当前音频卡,是否有蓝牙的耳机,蓝牙耳机对应设备一般以蓝牙地址作为名称的一部分,
# 比如:name: <bluez_card.E3_28_E9_24_21_07>
pacmd list-cards
# 查看音频输入源,是否有蓝牙的耳机
pacmd list-sources
# 比如:name: <bluez_source.E3_28_E9_24_21_07>
# 如果发现有name: <bluez_sink.E3_28_E9_24_21_07.monitor>
# 但是没有bluez_source.E3_28_E9_24_21_07
# 说明蓝牙配置不对
# bluez_sink.E3_28_E9_24_21_07.monitor是不能用于录音的

 

蓝牙耳机设置设置如下类型:

a2dp_sink          -- High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 10, available: yes)
headset_head_unit  -- Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 20, available: yes)
off                -- Off (sinks: 0, sources: 0, priority: 0, available: yes)

这里可选择"a2dp_sink"或"headset_head_unit"两种配置,其中"headset_head_unit"可以支持音频输入/输出,"a2dp_sink"只支持输出。

所以设置为headset_head_unit才能有蓝牙输入

# 修改配置为:headset_head_unit
pacmd set-card-profile bluez_card.E3_28_E9_24_21_07 headset_head_unit


# 查看可用于播放的音频设备
pacmd list-sinks
# 查看帮助
pacmd help
# 查看状态,包括默认输入输入音频,默认采样等
pacmd stat
 
# 设置默认音频输出设备
pacmd set-default-sink bluez_sink.E3_28_E9_24_21_07
# 设置默认音频输入设备,默认麦克风
pacmd set-default-source bluez_source.E3_28_E9_24_21_07

————————————————
                        
原文链接:https://blog.csdn.net/chenjk10/article/details/90317028

相关文章:

RK3588 桌面系统配置WiFi和蓝牙配置

桌面右上角点击&#xff0c;打开选项&#xff0c;找到WiFi的选择网络或者WiFi设置 在弹出的窗口中选择需要连接的WiFi&#xff0c;然后右下角选择连接&#xff0c;然后输入WiFi密码即可连接。 25.4. 命令行连接wifi路由器 命令行配置wifi的方法有很多&#xff0c;下面介绍几种…...

TLV格式

‌TLV格式&#xff08;Tag-Length-Value&#xff09;是一种常用的数据序列化格式&#xff0c;主要用于数据包或消息的有效载荷编码。‌TLV格式将数据划分为三个主要部分&#xff1a;Tag&#xff08;标签&#xff09;、Length&#xff08;长度&#xff09;和Value&#xff08;值…...

2024年9月电子学会等级考试五级第三题——整数分解

题目 3、整数分解 正整数 N 的 K-P 分解是指将 N 写成 K 个正整数的 P 次方的和。本题就请你对任意给定的正整数 N、K、P&#xff0c;写出 N 的 K-P 分解。 时间限制&#xff1a;8000 内存限制&#xff1a;262144 输入 输入在一行给出 3 个正整数 N (≤ 400)、K (≤ N)、P (1 …...

软考 系统架构设计师系列知识点之杂项集萃(60)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;59&#xff09; 第97题 在面向对象设计中&#xff0c;&#xff08;&#xff09;可以实现界面控制、外部接口和环境隔离。&#xff08;&#xff09;作为完成用例业务的责任承担者&#xff0c;协调…...

使用Python开发经典俄罗斯方块游戏

使用Python开发经典俄罗斯方块游戏 在这篇教程中&#xff0c;我们将学习如何使用Python和Pygame库开发一个经典的俄罗斯方块游戏。这个项目将帮助你理解游戏开发的基本概念&#xff0c;包括图形界面、用户输入处理、碰撞检测等重要内容。 项目概述 我们将实现以下功能&…...

C++:字符数组与字符串指针变量的大小

#include<iostream> #include<cstring> int main(int argc, char const *argv[]) {// 字符数组char str[128] "hello world";std::cout<<sizeof(str)<<std::endl;std::cout<<strlen(str)<<std::endl;// 字符串指针变量char *st…...

stm32使用freertos时延时时间间隔不对,可能是晶振频率没设置

freertos 获取频率的接口 在 FreeRTOSConfig.h 文件中声明一个函数作为freertos的接口 /// /// brief 获取 SysTick 的频率 /// /// note arm cortex-m 系列 CPU 有一个 systick &#xff0c;里面有一个 CTRL 寄存器&#xff0c;其中的 bit2 /// 可以用来控制 systick 的时钟…...

51c~C语言~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/13913911 一、大厂C语言编程10大规范 1 代码总体原则 1、清晰第一 清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的&#xff0c;好的代码应当可以像文章一样发声朗诵出来。 目前软件维护期成本…...

前端流行框架Vue3教程:17. _组件数据传递

_组件数据传递 我们之前讲解过了组件之间的数据传递&#xff0c;props 和自定义事件 两种方式 props&#xff1a;父传子 自定义事件&#xff1a;子传父 除了上述的方案&#xff0c;props也可以实现子传父 一、项目结构 src/ └── components/├── ComponentsA.vue # 父…...

Stack overflow

本文来源 &#xff1a;腾讯元宝 Stack Overflow - Where Developers Learn, Share, & Build Careers 开发者学习&#xff0c;分享 通过学习、工作和经验积累等方式&#xff0c;逐步建立和发展自己的职业生涯。 Find answers to your technical questions and help othe…...

SpringBoot 3.4.5版本导入Lomobok依赖后无法生效的问题

问题背景 最近&#xff0c;随着DeepSeek的爆火&#xff0c;小编也编写了一个前后端分离的“知库随考”系统&#xff0c;由于Spring AI官方提示想要使用Spring AI的话要求Spring Boot的版本在“3.4.x”以上&#xff0c;所以我在创建SpringBoot项目的时候选择了了Server URL:http…...

FPGA: UltraScale+ bitslip实现(ISERDESE3)

收获 一晃五年~ 五年前那个夏夜&#xff0c;我对着泛蓝的屏幕敲下《给十年后的自己》&#xff0c;在2020年的疫情迷雾中编织着对未来的想象。此刻回望&#xff0c;第四届集创赛的参赛编号仍清晰如昨&#xff0c;而那个在家熬夜焊电路板的"不眠者"&#xff0c;现在…...

Electron详解:原理与不足

Electron是一个集成项目&#xff0c;它通过定制Chromium和Node.js&#xff0c;并将它们集成在内部来实现其功能。具体来说&#xff0c;Electron做了以下几个重要的工作&#xff1a; 定制Chromium&#xff1a;并将定制版本的Chromium集成在Electron内部。定制Node.js&#xff1…...

Spring Boot多数据源配置的陷阱与终极解决方案

引言 在微服务架构和复杂业务场景中&#xff0c;一个Spring Boot应用连接多个数据库的需求日益普遍。许多开发者尝试通过简单复制单数据源配置来实现多数据源&#xff0c;结果却遭遇了Bean冲突、事务失效、连接泄漏等隐蔽问题。本文将深入剖析Spring Boot自动配置的底层逻辑&a…...

android display 笔记(十四)VAU 和GSP 分别代表什么

VAU 和 GSP 的解释 GSP (Graphics/GPU Subsystem Processor) 含义&#xff1a; 图形处理子系统&#xff0c;通常指 SoC&#xff08;系统级芯片&#xff09;中负责 2D/3D 图形渲染、显示合成、图像后处理&#xff08;如缩放、旋转、色彩管理&#xff09; 的硬件模块。 在部分芯…...

tomcat 400 The valid characters are defined in RFC 7230 and RFC 3986

在遇到 Tomcat 因 URL 非法字符返回 400 Bad Request 时,选择在 Nginx 还是 Tomcat 中配置错误处理,需根据实际场景和需求权衡。以下是两种方案的详细对比及配置方法: 一、选择建议 方案适用场景优点缺点Nginx 配置- 需要统一处理所有后端服务(如多个 Tomcat 实例)的 400 …...

nginx负载均衡及keepalive高可用

实验前期准备&#xff1a; 5台虚拟机&#xff1a;4台当做服务器&#xff0c;1台当做客户机&#xff08;当然&#xff0c;也可以使用主机的浏览器&#xff09;&#xff0c;4台服务器中&#xff0c;2台服务器当做后端真实访问服务器&#xff1b;另外2台服务器当做负载均衡服务器…...

漏洞修复:tomcat 升级版本 spring-boot-starter-tomcat 的依赖项

在Spring Boot项目中修复Tomcat漏洞(如CVE-2024-21733)时,通常需要升级内嵌Tomcat版本。以下是具体操作步骤和注意事项: 一、确认当前Tomcat版本 通过启动日志查看 启动项目时,控制台日志中会显示类似 Starting Servlet engine: [Apache Tomcat/9.0.43] 的信息,直接查看版…...

二、IGMP

目录 1. IGMPv1 1.1 IGMPv1 报⽂类型 1.2 IGMPv1 工作机制 1.3 成员加入 1.4 离组机制 2. IGMPv2 2.1 IGMPv2 报文 2.3 查询器选举 & 维护 2.4 成员加入 2.4 离组机制 3. IGMPv3 3.1 IGMPv3 vs. IGMPv2 3.2 IGMPv3 报文 3.3 IGMPv3 工作机制 4. IGMP Proxy …...

Redis--基础知识点--27--redis缓存分类树

在 Redis 中存储分类树&#xff0c;通常需要选择合适的数据结构来表现层级关系。以下是使用 字符串&#xff08;String&#xff09; 和 哈希&#xff08;Hash&#xff09; 两种常见方案的举例说明&#xff0c;结合电商分类场景&#xff08;如 电子产品 > 手机 > 智能手机…...

【2025最新】VSCode Cline插件配置教程:免费使用Claude 3.7提升编程效率

 2025年最新VSCode Cline插件安装配置教程&#xff0c;详解多种免费使用Claude 3.7的方法&#xff0c;集成DeepSeek-R1与5大实用功能&#xff0c;专业编程效率提升指南。 Cline是VSCode中功能最强大的AI编程助手插件之一&#xff0c;它能与Claude、OpenAI等多种大模型无缝集…...

SQL笔记一

SQL的分类 DDL&#xff08;数据定义语言&#xff09;&#xff1a;CREATE&#xff08;创建&#xff09; ALTER&#xff08;修改&#xff09; DROP&#xff08;删除结构&#xff09; RENAME&#xff08;重命名&#xff09; TRUNCATE&#xff08;清空&#xff09; DML&#xff0…...

高可靠低纹波国产4644电源芯片在工业设备的应用

摘要 随着工业自动化和智能化的飞速发展&#xff0c;工业设备对于电源芯片的性能和可靠性提出了前所未有的严格要求。电源芯片作为工业设备的核心供电组件&#xff0c;其性能直接影响到整个设备的运行效率和稳定性。本文以国科安芯的ASP4644四通道降压稳压器为例&#xff0c;通…...

MyBatis 的分页插件 c

前言 大型项目的数据体量很大&#xff0c;在前端界面展示时为保障展示效果&#xff0c;会要求接口快速返回&#xff0c;这时候后端会选择分页获取数据&#xff0c;只传递要查询的页码数据。这就避免了大多问题&#xff0c;达到快速返回的效果。 常用的分页有2种&#xff1a; …...

网络安全-等级保护(等保) 2-5 GB/T 25070—2019《信息安全技术 网络安全等级保护安全设计技术要求》-2019-05-10发布【现行】

################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...

嵌软面试每日一阅----FreeRTOS

一. FreeRTOS 创建任务的方法及区别 在 FreeRTOS 中&#xff0c;任务创建主要有两种方式&#xff1a;动态内存分配&#xff08;xTaskCreate()&#xff09;和静态内存分配&#xff08;xTaskCreateStatic()&#xff09;。以下是两者的核心区别及使用场景&#xff1a; 1. 动态创建…...

EasyExcel详解

文章目录 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底层逻辑~~4.easyExcel write的底层逻辑~~ 二、FastExcel1.为什么更换为fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 内容摘自官方&#xff1a;Java解析、生成Excel比较有名的…...

023-C语言预处理详解

C语言预处理详解 文章目录 C语言预处理详解1. 预定义符号2. #define定义常量3. #define定义宏4. 带有副作用的宏参数5. 宏替换的规则6. 宏函数的对比7. #和##7.1 #运算符7.2 ##运算符 8. 命名约定9. #undef10. 命令行定义11. 条件编译12. 头文件包含12.1 头文件被包含方式12.1.…...

C#自定义控件-实现了一个支持平移、缩放、双击重置的图像显示控件

1. 控件概述 这是一个继承自 Control 的自定义控件&#xff0c;主要用于图像的显示和交互操作&#xff0c;具有以下核心功能&#xff1a; 图像显示与缩放&#xff08;支持鼠标滚轮缩放&#xff09;图像平移&#xff08;支持鼠标拖拽&#xff09;视图重置&#xff08;双击重置…...

MarkitDown:AI时代的文档转换利器

在当今AI快速发展的时代,如何高效地将各种格式的文档转换为机器可读的格式,成为了一个迫切需要解决的问题。今天,我们来介绍一款由微软开发的强大工具——MarkitDown,它正是为解决这一问题而生的。 什么是MarkitDown? MarkitDown是一个用Python编写的轻量级工具,专门用…...

《数字分身进化论:React Native与Flutter如何打造沉浸式虚拟形象编辑》

React Native&#xff0c;依托JavaScript语言&#xff0c;借助其成熟的React生态系统&#xff0c;开发者能够快速上手&#xff0c;将前端开发的经验巧妙运用到移动应用开发中。它通过JavaScript桥接机制调用原生组件&#xff0c;实现与iOS和Android系统的深度交互&#xff0c;这…...

DeerFlow:字节新一代 DeepSearch 框架

项目地址&#xff1a;https://github.com/bytedance/deer-flow/ 【全新的 Multi-Agent 架构设计】独家设计的 Research Team 机制&#xff0c;支持多轮对话、多轮决策和多轮任务执行。与 LangChain 原版 Supervisor 相比&#xff0c;显著减少 Tokens 消耗和 API 调用次数&#…...

数字孪生工厂实战指南:基于Unreal Engine/Omniverse的虚实同步系统开发

引言&#xff1a;工业元宇宙的基石技术 在智能制造2025与工业元宇宙的交汇点&#xff0c;数字孪生技术正重塑传统制造业。本文将手把手指导您构建基于Unreal Engine 5.4与NVIDIA Omniverse的实时数字孪生工厂系统&#xff0c;集成Kafka实现毫秒级虚实同步&#xff0c;最终交付…...

牛客网NC22015:最大值和最小值

牛客网NC22015&#xff1a;最大值和最小值 题目描述 题目要求 输入&#xff1a;一行&#xff0c;包含三个整数 a, b, c &#xff08;1≤a,b,c≤1000000&#xff09; 输出&#xff1a;两行&#xff0c;第一行输出最大数&#xff0c;第二行输出最小数。 样例输入&#xff1a; …...

Uniapp中小程序调用腾讯地图(获取定位地址)

1、先配置权限&#xff1a; 这是上图的代码&#xff1a; "permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } } 第二步&#xff1a;写代码&#xff1a; //下面是uniapp的模版代码 主…...

2025 后端自学UNIAPP【项目实战:旅游项目】5、个人中心页面:微信登录,同意授权,获取用户信息

一、框架以及准备工作 1、前端项目文件结构展示 2、后端项目文件结构展示 3、登录微信公众平台&#xff0c;注册一个个人的程序&#xff0c;获取大appid&#xff08;前端后端都需要&#xff09;和密钥&#xff08;后端需要&#xff09; 微信公众平台微信公众平台&…...

隆重推荐(Android 和 iOS)UI 自动化工具—Maestro

文章目录 前言一、为什么选择 Maestro&#xff1f;二、使用步骤1.安装&#xff08;Windows&#xff09;2.运行示例 三、Maestro Studio &#xff08;重点&#xff09;轻松编辑测试 四、价格总结 前言 当前移动 UI 自动化工具的实际效能与预期存在显著差距&#xff0c;团队推行…...

C#发送文件到蓝牙设备

测试环境&#xff1a; visual studio 2022 win11笔记本电脑&#xff0c;具有蓝牙功能 .net6控制台 测试步骤如下&#xff1a; 1 新增名为BluetoothDemo控制台项目 2 通过nuget安装InTheHand.Net.Bluetooth&#xff0c;版本选择4.2.1和安装InTheHand.Net.Obex&#xff0c;版…...

采用sherpa-onnx 实现 ios语音唤起的调研

背景 项目中需要实现一个语音唤起的功能&#xff0c;选择sherpa-onnx进行调研&#xff0c;要求各端都要验证没有问题。个人负责ios这部分的调研。查询官方发现没有直接针对ios语音唤起的稳定&#xff0c;主要技术平台也没有相关的可以借鉴。经过调研之后补充了一个。 一、下载…...

磁盘I/O瓶颈排查:面试通关“三部曲”心法

想象一下&#xff0c;你就是线上系统的“交通调度总指挥”&#xff0c;服务器的磁盘是所有数据进出的“核心枢纽港口”。当这个“港口”突然拥堵不堪&#xff0c;卡车&#xff08;数据请求&#xff09;排起长龙&#xff0c;进不去也出不来&#xff0c;整个系统的“物流”&#…...

磁盘性能测试与分析:结合fio和iostat的完整方案

磁盘性能测试与分析&#xff1a;结合fio和iostat的完整方案 磁盘性能是影响现代计算机系统整体运行效率的关键因素之一&#xff0c;特别是对于高I/O负载的应用如数据库、虚拟化环境等。本文将详细介绍如何利用fio和iostat工具全面评估磁盘性能&#xff0c;包括IOPS、带宽、延迟…...

随机森林(Random Forest)

随机森林&#xff08;Random Forest&#xff09;是一种基于决策树的集成学习算法&#xff0c;它通过构建多个决策树并将它们的预测结果进行综合&#xff0c;从而提高模型的准确性和稳定性。 1.基本原理 随机森林属于集成学习中的“Bagging”方法。其核心思想是通过构建多个决…...

C#数据类型

&#x1f9e9; 一、布尔值&#xff08;bool&#xff09; 表示逻辑值&#xff1a;true 或 false bool isTrue true; bool isFalse false;&#x1f4cc; 二、整数&#xff08;Integer Types&#xff09; C# 支持多种有符号和无符号整数类型&#xff1a; 类型大小范围sbyte8…...

FastAPI 实现 Express 框架的 p-limit(1) 防并发操作

背景 以下是将 Electron 主进程中的 CURD 逻辑&#xff08;Express 实现&#xff09;迁移到 FastAPI 的完整方案&#xff0c;包含技术选型、实现步骤和注意事项&#xff0c;确保主进程与子进程解耦且稳定运行&#xff1a; 关键点 注意用 conda 安装 python 版本时&#xff0c…...

STC8H系列单片机STC8H_H头文件功能注释

#ifndef __STC8H_H__ // 条件编译:如果未定义__STC8H_H__宏 #define __STC8H_H__ // 则定义该宏,防止头文件被重复包含 / //包含本头文件后,不用另外再包含"REG51.H" // 提示:本头文件已包含基本寄存器定义 sfr P0 = …...

C#中BackgroundWorker的概念与用法详解

一、BackgroundWorker 概念 BackgroundWorker 是 C# 中用于在后台线程中运行操作的组件&#xff0c;它允许你在不影响用户界面&#xff08;UI&#xff09;响应能力的情况下执行耗时操作。 它位于 System.ComponentModel 命名空间内&#xff0c;主要用于 Windows 窗体应用程序中…...

RM算法的地下宫殿

证&#xff1a; X n 1 X n β n ( ξ n − X n ) ( 1 − β n ) X n β n ξ n X_{n1}X_n\beta_n(\xi_n-X_n)(1-\beta_n)X_n\beta_n\xi_n Xn1​Xn​βn​(ξn​−Xn​)(1−βn​)Xn​βn​ξn​。由数学归纳法可得 X n 1 ∑ j 1 n ξ j β j ∏ i j n − 1 ( 1 − β…...

WEB安全--Java安全--LazyMap_CC1利用链

一、前言 该篇是基于WEB安全--Java安全--CC1利用链-CSDN博客的补充&#xff0c;上篇文章利用的是TransformedMap类&#xff0c;而CC链的原作者是利用的LazyMap类作为介质进行的触发。 所以本文将分析国外原作者在ysoserial commonscollections1中给出的CC1利用链。 二、回顾梳…...

【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!

文章目录 一、软件安装1.1 系统配置要求1.2 安装 二、新版功能探索2.1 界面图标和深色主题2.2 MATLAB Copilot AI助手2.3 绘图区升级2.4 simulink2.5 更多 延迟一个月&#xff0c;终于发布了&#x1f92d;。 一、软件安装 1.1 系统配置要求 现在的电脑都没问题&#xff0c;老…...

[网络升级指南] 服务器网卡/带宽如何选?1GbE vs 10GbE vs 25GbE+ 性能与成本深度解析 (2025)

更多服务器知识&#xff0c;尽在hostol.com 嘿&#xff0c;各位服务器“舰长”们&#xff01;当你为你的“星际飞船”&#xff08;服务器&#xff09;配备了顶级的 CPU“引擎”、超大的内存“能源核心”、以及光速 SSD“曲速引擎”之后&#xff0c;是不是觉得它就能在数字宇宙…...