CM4-NVME-NAS-BOX是一体主机,主要设计用于家庭环境或小型家庭办公室,但不限于这些场景。这是一个简单易用的开箱即用解决方案,无需网络和存储系统的专家级知识,并且板载红外、音频等模块。
USB接口在CM4上默认是被禁用的,以节省电源。如果需要启动,你需要在config.txt文件中添加以下内容:
dtoverlay=dwc2,dr_mode=host
重启之后即可
如果使用最新的树莓派OS(2021年10月30号之后的镜像)USB2.0是默认是OTG模式,CM4会报错:
config failed, hub doesn't have any ports! (err -19)
不过USB还是可以使用的,如果想移除这个错误,在config.txt的[cm4]中移除otg_mode=1,并且添加dtoverlay=dwc2,dr_mode=host(不添加是无法识别USB的)。
音频接口使用USB音频,支持播放和录音,立体声编解码,支持带麦克风的耳机,耳麦二合一。
检查USB设备: lsusb
pi@CM4-NVME-NAS-BASE:~ $ lsusb
Bus 003 Device 002: ID 0c76:161f JMTek, LLC.
注: 如果识别到不到音频,可能是USB2.0功能没有开启,需要先开启USB2.0 然后才可以识别到
检查播放设备:aplay -l
pi@CM4-NVME-NAS-BASE:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: Device [USB PnP Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
检查录音设备:arecord -l
pi@CM4-NVME-NAS-BASE:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: Device [USB PnP Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
录播测试:sudo arecord -f S32_LE -Dplughw:1,0 | aplay -Dplughw:1,0
pi@CM4-NVME-NAS-BASE:~ $ sudo arecord -f S32_LE -Dplughw:1,0 | aplay -Dplughw:1,0
xcb_connection_has_error() returned true
xcb_connection_has_error() returned true
Recording WAVE 'stdin' : Signed 32 bit Little Endian, Rate 8000 Hz, Mono
Playing WAVE 'stdin' : Signed 32 bit Little Endian, Rate 8000 Hz, Mono
注意: 录播测试命令不唯一,需要用户根据实际设备号来修改命令,其中 前面"-Dplughw:1,0" 表示为录制 声卡1 设备0(arecord -l 中可以看到对应声卡和设备),后面"aplay -Dplughw:1,0"表示为播放 声卡1 设备0(aplay -l 中可以看到对应声卡和设备)
调节音量:sudo alsamixer
F6:选择声卡
预留焊盘(无焊接)
分别是(从上往下):
音量+
音量-
播放暂停
pi@CM4-NVME-NAS-BASE:~ $ lspci
00:00.0 PCI bridge: Broadcom Limited Device 2711 (rev 20)
01:00.0 PCI bridge: ASMedia Technology Inc. ASM1184e PCIe Switch Port
02:01.0 PCI bridge: ASMedia Technology Inc. ASM1184e PCIe Switch Port
02:03.0 PCI bridge: ASMedia Technology Inc. ASM1184e PCIe Switch Port
02:05.0 PCI bridge: ASMedia Technology Inc. ASM1184e PCIe Switch Port
02:07.0 PCI bridge: ASMedia Technology Inc. ASM1184e PCIe Switch Port
03:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
以上是未连接任何NVME设备,如果连接NVME设备将会多输出对应的设备
sudo apt update sudo apt upgrade
wget https://www.waveshare.net/w/upload/e/ee/CM4-DUAL-ETH-MINI-Example.zip unzip CM4-DUAL-ETH-MINI-Example.zip -d ./CM4-DUAL-ETH-MINI-Example cd CM4-DUAL-ETH-MINI-Example/Driver/ tar vjxf r8168-8.050.03.tar.bz2 cd r8168-8.050.03 sudo ./autorun.sh
Device Drivers > Network device support > Ethernet driver support > Realtek devices > Realtek 8169/8168/8101/8125 ethernet support
RTC (PCF85063a) 在i2c-1 上,地址是 0x51(7位地址)
sudo nano /boot/config.txt
#在最后添加
dtparam=i2c_vc=on
dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi
#在dtparam=audio=on前面添加# 号
#dtparam=audio=on
#保存退出,重启
sudo reboot
同步系统时钟 -> 硬件时钟
sudo hwclock -w
同步硬件时钟 -> 系统时钟
sudo hwclock -s
#需要关闭网络,或者关闭网络对时,否则会被改回去
设置硬件时钟时间:
sudo hwclock --set --date="9/8/2021 16:45:05"
查看硬件时钟
sudo hwclock -r
显示版本信息
sudo hwclock --verbose
CSI 和 DSI默认是关闭的,使用摄像头和DSI的时候会占用I2C-10、I2C-11、I2C-0 三个I2C设备
开机执行如下:
wget https://www.waveshare.net/w/upload/7/75/CM4_dt_blob_Source.zip
unzip -o CM4_dt_blob_Source.zip -d ./CM4_dt_blob_Source
sudo chmod 777 -R CM4_dt_blob_Source
cd CM4_dt_blob_Source/
#如果使用两个摄像头和DSI0 执行
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-disp0-double_cam.dts
#如果使用两个摄像头和DSI1 执行
sudo dtc -I dts -O dtb -o /boot/dt-blob.bin dt-blob-disp1-double_cam.dts
#在使用任意DSI时,HDMI1没有图像输出,哪怕你没有连接DSI屏幕只要编译的对应的文件,那HDMI1就没有输出了
#如果需要恢复,删除对应的dt-blob.bin 即可: sudo rm -rf /boot/dt-blob.bin
#执行完毕 关闭电源 重启CM4
再连接摄像头和DSI屏幕:
1: 确保断电状态下连接
2: 连接电源
3: 等待几秒后屏幕启动
4: 如果无法启动,检查/boot/dt-blob.bin 是否存在,如果存在再次重启即可。
摄像头需要运行raspi-config,选择Interfacing Options->Camera->Yes->Finish-Yes,reboot系统,打开enable camera,然后重启即可保存修改。
测试树莓派摄像头
查看接入的第一个摄像头画面:
sudo raspivid -t 0 -cs 0
查看接入的第二个摄像头画面:
sudo raspivid -t 0 -cs 1
如果使用最新的树莓派OS(Bullseye):
#新系统使用双摄像头
#在config.txt中移除camera_auto_detect=1
#camera_auto_detect=1
#添加
dtoverlay=imx219,cam1
dtoverlay=imx219,cam0
#其中imx219是摄像头传感器型号,还有支持其他传感器
dtoverlay=ov5647,cam0
dtoverlay=imx219,cam0
dtoverlay=ov9281,cam0
dtoverlay=imx477,cam0
dtoverlay=imx519,cam0
#然后重启
reboot
#打开摄像头
libcamera-hello -t 0
或者
libcamera-hello
#其他部分指令:
#检查摄像头是否被检测到
libcamera-hello --list-cameras
#打开对应的摄像头,预览5秒
libcamera-hello --camera 1
libcamera-hello --camera 0
#拍摄照片
libcamera-jpeg -o test.jpg
#拍摄视频
libcamera-vid -t 10000 -o test.h264
#可以添加 --camera 来指定摄像头
#-t <duration> 选项允许用户选择窗口显示多长时间,单位毫秒
更多指令点击我
sudo rm -rf /boot/dt-blob.bin
参考树莓派手册
再连接摄像头:
1: 确保断电状态下连接
2: 连接电源
3: 等待几秒后屏幕启动
4: 如果无法启动,检查/boot/dt-blob.bin 是否存在,如果存在再次重启即可。
5:摄像头需要运行raspi-config,选择Interfacing Options->Camera->Yes->Finish-Yes,reboot系统,打开enable camera,然后重启即可保存修改。
测试拍照:
raspistill -o image.jpg
测试录像:
raspivid -o video.h264 -t 10000
其中 -t 10000 表示录制 10 秒,用户各根据自己的需要进行调整。
参考:CSI相机