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设置
-
然后移动方向键到你要连接的wifi,按
Enter键
-
如果是连接未连接的有密码的热点则进入输入密码界面
-
如果是没有密码或者已连接的热点则连接热点或者取消连接热点
注解
使用有些网卡(如rtl8821cu),系统会生成两个网络接入点p2p0和wlan0, wifi使用哪个节点连接都可以,使用p2p0会方便设置, 使用wlan0会比较符合广大网友们的习惯
第一次连接有密码的热点时,如图下
-
输入密码后,就可以看到wifi已连接
如果想要断开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 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 |
语句 | 功能 | 举例 |
---|---|---|
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个进程,不然会开启失败
如果失败可以使用
1 2 | cat /home/cat/hostapd.log #查看失败的原因 |
可以根据失败原因到百度上找出问题.
桌面系统配置蓝牙
默认蓝牙是打开的状态,点击右上角选项找到蓝牙设置
在打开的界面中,找到需要连接的蓝牙设备,然后双击点击即可连接。
如果连接的设备需要配对,则会弹出PIN码确认窗口,需要板卡和连接的设备都进行确认,确认后即可连接。
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 |
使用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