树莓派笔记--从raspi-config中挖掘出的有用脚本及命令
弹出窗口:
whiptail --msgbox "MassageBox Test" 20 60
whiptail --yesno --defaultno "Yes or No Box Test" 20 60
tr命令: 对来自标准输入的字符进行替换、压缩和删除。
语法
tr(选项)(参数)
选项
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;
-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。
删除空格符:tr -d ' '
删除字符集之外的字符:tr -d -c '0-9 \n'
将制表符转化为空格:tr '\t' ' '
多个空格合并为一个空格: tr -s ' ' ' '
小写字母转换成大写字母:tr '[:lower:]' '[:upper:]'
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
cut命令: 显示每行从开头算起 num1 到 num2 的文字
使用说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。
树莓派笔记--蓝牙应用
文章摘要: 蓝牙通信分为两种:经典蓝牙和低功耗蓝牙。
早期的蓝牙通信方式称为经典蓝牙(classic bluetooth),经典蓝牙中的数据传输协议是串行仿真协议RFCOMM,RFCOMM仿真了常见的串口连接,数据从一端输入,从另一端取出。经典蓝牙的开发非常简单。基于串口开发的有线键鼠程序,就可以直接用于RFCOMM连接的无线键鼠。此外,经典蓝牙可以快速传输数据。因此,诺基亚N95这样的早期智能手机,也用RFCOMM来互传图片和文件。
经典蓝牙的缺点是比较耗电。后来,诺基亚发明了一种可以降低功耗的蓝牙通信方式。2010年出台的蓝牙4.0把这种通信方式规范为“低功耗蓝牙”(BLE,Bluetooth Low Energy)。BLE把通信双方分为非对称的双方,尽量让其中的一方承担主要的开销,减少另一方的负担。举例来说,手环电量少,而且需要长时间待机。BLE通信的主要负担可以放在电量较充裕且充电方便的手机一侧,从而减少手环的能耗。
硬件平台: raspi4
蓝牙模块:
命令操作: bluetoothctl命令进入蓝牙命令模式,显示蓝牙提示符
$ bluetoothctl
Agent registered
[bluetooth]#
命令列表:
打开蓝牙电源: power on
关闭蓝牙电源: power off
设置搜索可见: discoverable on
显示设备列表:
[bluetooth]# list
Controller DC:A6:32:A5:58:F2 raspberrypi [default]
搜索周边设备:
[bluetooth]# scan on
Discovery started
[CHG] Controller DC:A6:32:A5:58:F2 Discovering: yes
[NEW] Device 6A:DA:D3:A0:EC:91 6A-DA-D3-A0-EC-91
[NEW] Device F0:63:F9:4D:E1:39 SMU********000206
[NEW] Device FC:58:FA:E2:E4:3C Baseus COVO S17 Pro
[NEW] Device 4B:6B:12:4F:CE:8A 4B-6B-12-4F-CE-8A
[NEW] Device 50:EB:71:14:75:D4 DESKTOP-5N3BTUQ
[NEW] Device 90:F0:52:68:E5:95 @xiaoxin
配对设备:
[bluetooth]# pair FC:58:FA:E2:E4:3C
查看已配对设备:
[bluetooth]# paired-devices
Device FC:58:FA:E2:E4:3C Baseus COVO S17 Pro
Device 94:0E:6B:63:22:F9 Honor 8 Lite
连接设备: 连接成功后更改命令提示符
[bluetooth]# connect FC:58:FA:E2:E4:3C
Attempting to connect to FC:58:FA:E2:E4:3C
[CHG] Device FC:58:FA:E2:E4:3C Connected: yes
Connection successful
[CHG] Device FC:58:FA:E2:E4:3C ServicesResolved: yes
[Baseus COVO S17 Pro]#
断开连接:断开连接后,恢复命令提示符
[Baseus COVO S17 Pro]# disconnect FC:58:FA:E2:E4:3C
Attempting to disconnect from FC:58:FA:E2:E4:3C
[CHG] Device FC:58:FA:E2:E4:3C ServicesResolved: no
Successful disconnected
[CHG] Device FC:58:FA:E2:E4:3C Connected: no
[bluetooth]#
命令清单:
[bluetooth]# help
Menu main:
Available commands:
-------------------
advertise Advertise Options Submenu
scan Scan Options Submenu
gatt Generic Attribute Submenu
list List available controllers
show [ctrl] Controller information
select <ctrl> Select default controller
devices List available devices
paired-devices List paired devices
system-alias <name> Set controller alias
reset-alias Reset controller alias
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
advertise <on/off/type> Enable/disable advertising with given type
set-alias <alias> Set device alias
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
menu <name> Select submenu
version Display version
quit Quit program
exit Quit program
help Display help about this program
export Print evironment variables
串口通信模式:
修改/etc/systemd/system/bluetooth.target.wants/bluetooth.service文件
# bluetoothd 命令后添加-C参数
ExecStart=/usr/lib/bluetooth/bluetoothd -C
# 添加下边一行命令(启动后运行)
ExecStartPost=/usr/bin/sdptool add SP
重启服务及系统:
sudo systemctl daemon-reload
reboot
开启蓝牙发现,并允许配对请求
$ sudo hciconfig hci0 piscan
若需关闭发现,使用
$ sudo hciconfig hci0 noscan
$ rfcomm watch hci0
Waiting for connection on channel 1
此时等待设备连接,可用手机搜索连接蓝牙设备,连接后显示:
Connection from 94:0E:6B:63:22:F9 to /dev/rfcomm0
Press CTRL-C for hangup
此时会在/dev目录下产生rfcomm0设备文件,此时可通过对/dev/rfcomm0文件进行读写操作。
树莓派笔记--无线路由器
安装软件包:
$ sudo apt-get install hostapd
$ sudo apt-get install dnsmasq
$ sudo apt-get install isc-dhcp-server
hostapd将开启无线适配器的AP功能
dnsmasq DNS服务
isc-dhcp-server DHCP服务
取消wlan0的DHCP功能: 修改/etc/dhcpcd.conf文件,添加一行内容:
denyinterfaces wlan0
设置wlan0的静态IP:
# 修改文件 /etc/network/interfaces.d/wlan0 内容如下:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.8.1
netmask 255.255.255.0
network 192.168.8.0
broadcast 192.168.8.255
更新配置: 重启DHCP服务(客户端)和wlan0
sudo service dhcpcd restart
sudo ifdown wlan0
sudo ifup wlan0
新建配置文件: /etc/hostapd/hostapd.conf
# 指完无线网络接口
interface=wlan0
# Use the nl80211 driver with the brcmfmac driver
driver=nl80211
# SSID:无线网络名称
ssid=HelloWorld
# 使用2.4GHz频段
hw_mode=g
# 设置无线信道
channel=6
# 使能 802.11n 协议
ieee80211n=1
# 使能 WMM
wmm_enabled=1
# Enable 40MHz channels with 20ns guard interval
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
# 允许所有MAC地址
macaddr_acl=0
# 使用 WPA 认证
auth_algs=1
# 设置是否隐藏SSID
ignore_broadcast_ssid=0
# 使用 WPA2 认证
wpa=2
# 使用预共享密钥
wpa_key_mgmt=WPA-PSK
# 网络密钥(有最小长度要求)
wpa_passphrase=88888888
# 使用AES, 而不用TKIP
rsn_pairwise=CCMP
测试网络:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
能搜取网络即可, 修改/etc/default/hostapd文件,用于自动启动
# 将 DAEMON_CONF=""修改为
DAEMON_CONF="/etc/hostapd/hostapd.conf"
使能DHCP服务
修改配置文件/etc/dhcp/dhcpd.conf,内容如下
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.8.0 netmask 255.255.255.0 {
# IP地址范围
range 192.168.8.10 192.168.8.100;
option routers 192.168.8.1;
option broadcast-address 192.168.8.255;
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
如果运行提示失败,尝试以下命令:
/usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf
设置IP转发(重要)
修改/etc/sysctl.conf文件,去掉net.ipv4.ip_forward=1前面的“#”号。
设置路由转发规则:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
保存路由表:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
设为开机自动加载: 修改/etc/rc.local文件,添加一行内容
iptables-restore < /etc/iptables.ipv4.nat
https://www.waveshare.net/study/portal.php?mod=view&aid=744
问题处理:
Job for hostapd.service failed because the control process exited with error code.
See "systemctl status hostapd.service" and "journalctl -xe" for details.
查看状态:
$ systemctl status hostapd.service
● hostapd.service
Loaded: masked (Reason: Unit hostapd.service is masked.)
原因是masked,直接unmask即可
sudo systemctl unmask hostapd
imx8开发笔记--uboot
CPU型号: imx8mq
开发板型号: imx8mq_env
- 默认启动参数 include/env_default.h/
include\configs\imx8mq_evk.h
编译后使用uboot.bin文件