Raspberry Pi 4B入手教程和注意事项

本文章随机更新,主要用来记录rpi4b遇到的问题和解决方案。

Raspberry 4b的SD卡槽问题

Raspberry pi 4b的卡槽不带自动弹出功能。你也许觉得手动拔出也好,但问题其实出现再插入上。
当你用了稍大的力气将sd卡塞进卡槽,发现怎么也调不准方向。这时忽然可以插进卡槽,你以为这下好了。结果一下SD到底,用力过猛。SD卡断了。别以为我是胡说,因为我曾再另一款类似设计的SD卡上遭遇过。

Raspberry 4b支持64bit os

也就是说,你可以选用64-bit的。现在已经不是数年前,64位才是主流。很多release出来的软件都在linux 64bits上测试过。而且以后会逐步淘汰32 bits

安装之后怎么查看版本

当然你也可以用uname -a,但是这个命令看不出debian的版本。
建议使用

cat /etc/os-release

不过这个命令看不到os版本

Raspberry pi os 64-bits更换清华源

参考此文档,根据正确版本执行换源操作

# 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberry-pi-os/raspbian/ buster main non-free contrib rpi

# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

SSH连接时的密码和账户

在使用ssh连接raspberry pi时,需要知道ip地址。

ssh pi@192.168.xxx.xxx

但是如果你没有屏幕要怎么查找呐?
如果你们访问路由器,可以在连接列表里面直接查看。但是如果比没有路由器的访问权限呐?
可以使用局域网扫描工具来完成。
此外还需要设法在制作的raspberry pi镜像根目录下建立一个名为"SSH"的文件。这样就开启了SSH服务

静态IP设置

当你没有屏幕的时候,可能需要ssh连接。但是此时的ip地址是自动分配的。你可以通过查看连接的路由器找到树莓派的ip,但是这样优惠重新建立一个新的ssh连接配置。不是特别好。
所以需要设置静态IP。
可以通过修改/etc/network/interfaces。但是如果你打开这个文件之后。会告诉你可以用"man dhcpcd.conf"来查看怎么设置静态IP。其实就是修改/etc/dhcpcd.conf。里面有个示例:

 # wlan0 for wifi
interface eth0                       
# your expect static ip                                                                                                                                                                                                  
static ip_address=192.168.1.121/24                                                                                                                                                                                                                                                                                                                                                                                                        static ip6_address=fd51:42f8:caae:d92e::ff/64                                                                                                                                                                                                                                                                                                                                                                              # your expect route                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            static routers=192.168.1.1                                            
# dns                                                                                                                                                                     
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1	

设置HDMI以固定分辨率输出

在HDMI中有两个关键参数需要设置:

hdmi_group = xxx
hdmi_mode = xxx

其中hdmi_group用来选择按照那组标准设置分辨率,这时候hdmi_mode对应的数字指定的分辨率不同。
参考树莓派实验室教程,有下面信息。
对于hdmi_group = 1时,按照CEA标准:

hdmi_mode=1    VGA
hdmi_mode=2    480p  60Hz
hdmi_mode=3    480p  60Hz  H
hdmi_mode=4    720p  60Hz
hdmi_mode=5    1080i 60Hz
hdmi_mode=6    480i  60Hz
hdmi_mode=7    480i  60Hz  H
hdmi_mode=8    240p  60Hz
hdmi_mode=9    240p  60Hz  H
hdmi_mode=10   480i  60Hz  4x
hdmi_mode=11   480i  60Hz  4x H
hdmi_mode=12   240p  60Hz  4x
hdmi_mode=13   240p  60Hz  4x H
hdmi_mode=14   480p  60Hz  2x
hdmi_mode=15   480p  60Hz  2x H
hdmi_mode=16   1080p 60Hz
hdmi_mode=17   576p  50Hz
hdmi_mode=18   576p  50Hz  H
hdmi_mode=19   720p  50Hz
hdmi_mode=20   1080i 50Hz
hdmi_mode=21   576i  50Hz
hdmi_mode=22   576i  50Hz  H
hdmi_mode=23   288p  50Hz
hdmi_mode=24   288p  50Hz  H
hdmi_mode=25   576i  50Hz  4x
hdmi_mode=26   576i  50Hz  4x H
hdmi_mode=27   288p  50Hz  4x
hdmi_mode=28   288p  50Hz  4x H
hdmi_mode=29   576p  50Hz  2x
hdmi_mode=30   576p  50Hz  2x H
hdmi_mode=31   1080p 50Hz
hdmi_mode=32   1080p 24Hz
hdmi_mode=33   1080p 25Hz
hdmi_mode=34   1080p 30Hz
hdmi_mode=35   480p  60Hz  4x
hdmi_mode=36   480p  60Hz  4xH
hdmi_mode=37   576p  50Hz  4x
hdmi_mode=38   576p  50Hz  4x H
hdmi_mode=39   1080i 50Hz  reduced blanking
hdmi_mode=40   1080i 100Hz
hdmi_mode=41   720p  100Hz
hdmi_mode=42   576p  100Hz
hdmi_mode=43   576p  100Hz H
hdmi_mode=44   576i  100Hz
hdmi_mode=45   576i  100Hz H
hdmi_mode=46   1080i 120Hz
hdmi_mode=47   720p  120Hz
hdmi_mode=48   480p  120Hz
hdmi_mode=49   480p  120Hz H
hdmi_mode=50   480i  120Hz
hdmi_mode=51   480i  120Hz H
hdmi_mode=52   576p  200Hz
hdmi_mode=53   576p  200Hz H
hdmi_mode=54   576i  200Hz
hdmi_mode=55   576i  200Hz H
hdmi_mode=56   480p  240Hz
hdmi_mode=57   480p  240Hz H
hdmi_mode=58   480i  240Hz
hdmi_mode=59   480i  240Hz H
H means 16:9 variant (of a normally 4:3 mode).
2x means pixel doubled (i.e. higher clock rate, with each pixel repeated twice)
4x means pixel quadrupled (i.e. higher clock rate, with each pixel repeated four times)

当hdmi_group=2时,按照DMT标准输出:

hdmi_mode=1    640x350   85Hz
hdmi_mode=2    640x400   85Hz
hdmi_mode=3    720x400   85Hz
hdmi_mode=4    640x480   60Hz
hdmi_mode=5    640x480   72Hz
hdmi_mode=6    640x480   75Hz
hdmi_mode=7    640x480   85Hz
hdmi_mode=8    800x600   56Hz
hdmi_mode=9    800x600   60Hz
hdmi_mode=10   800x600   72Hz
hdmi_mode=11   800x600   75Hz
hdmi_mode=12   800x600   85Hz
hdmi_mode=13   800x600   120Hz
hdmi_mode=14   848x480   60Hz
hdmi_mode=15   1024x768  43Hz  DO NOT USE
hdmi_mode=16   1024x768  60Hz
hdmi_mode=17   1024x768  70Hz
hdmi_mode=18   1024x768  75Hz
hdmi_mode=19   1024x768  85Hz
hdmi_mode=20   1024x768  120Hz
hdmi_mode=21   1152x864  75Hz
hdmi_mode=22   1280x768        reduced blanking
hdmi_mode=23   1280x768  60Hz
hdmi_mode=24   1280x768  75Hz
hdmi_mode=25   1280x768  85Hz
hdmi_mode=26   1280x768  120Hz reduced blanking
hdmi_mode=27   1280x800        reduced blanking
hdmi_mode=28   1280x800  60Hz
hdmi_mode=29   1280x800  75Hz
hdmi_mode=30   1280x800  85Hz
hdmi_mode=31   1280x800  120Hz reduced blanking
hdmi_mode=32   1280x960  60Hz
hdmi_mode=33   1280x960  85Hz
hdmi_mode=34   1280x960  120Hz reduced blanking
hdmi_mode=35   1280x1024 60Hz
hdmi_mode=36   1280x1024 75Hz
hdmi_mode=37   1280x1024 85Hz
hdmi_mode=38   1280x1024 120Hz reduced blanking
hdmi_mode=39   1360x768  60Hz
hdmi_mode=40   1360x768  120Hz reduced blanking
hdmi_mode=41   1400x1050       reduced blanking
hdmi_mode=42   1400x1050 60Hz
hdmi_mode=43   1400x1050 75Hz
hdmi_mode=44   1400x1050 85Hz
hdmi_mode=45   1400x1050 120Hz reduced blanking
hdmi_mode=46   1440x900        reduced blanking
hdmi_mode=47   1440x900  60Hz
hdmi_mode=48   1440x900  75Hz
hdmi_mode=49   1440x900  85Hz
hdmi_mode=50   1440x900  120Hz reduced blanking
hdmi_mode=51   1600x1200 60Hz
hdmi_mode=52   1600x1200 65Hz
hdmi_mode=53   1600x1200 70Hz
hdmi_mode=54   1600x1200 75Hz
hdmi_mode=55   1600x1200 85Hz
hdmi_mode=56   1600x1200 120Hz reduced blanking
hdmi_mode=57   1680x1050       reduced blanking
hdmi_mode=58   1680x1050 60Hz
hdmi_mode=59   1680x1050 75Hz
hdmi_mode=60   1680x1050 85Hz
hdmi_mode=61   1680x1050 120Hz reduced blanking
hdmi_mode=62   1792x1344 60Hz
hdmi_mode=63   1792x1344 75Hz
hdmi_mode=64   1792x1344 120Hz reduced blanking
hdmi_mode=65   1856x1392 60Hz
hdmi_mode=66   1856x1392 75Hz
hdmi_mode=67   1856x1392 120Hz reduced blanking
hdmi_mode=68   1920x1200       reduced blanking
hdmi_mode=69   1920x1200 60Hz
hdmi_mode=70   1920x1200 75Hz
hdmi_mode=71   1920x1200 85Hz
hdmi_mode=72   1920x1200 120Hz reduced blanking
hdmi_mode=73   1920x1440 60Hz
hdmi_mode=74   1920x1440 75Hz
hdmi_mode=75   1920x1440 120Hz reduced blanking
hdmi_mode=76   2560x1600       reduced blanking
hdmi_mode=77   2560x1600 60Hz
hdmi_mode=78   2560x1600 75Hz
hdmi_mode=79   2560x1600 85Hz
hdmi_mode=80   2560x1600 120Hz reduced blanking
hdmi_mode=81   1366x768  60Hz
hdmi_mode=82   1080p     60Hz
hdmi_mode=83   1600x900        reduced blanking
hdmi_mode=84   2048x1152       reduced blanking
hdmi_mode=85   720p      60Hz
hdmi_mode=86   1366x768        reduced blanking

比如我的7寸屏幕时1024x600的。那么我应该怎么设置呐?
这时候需要设置hdmi_cvt,参考这里

hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
width        width in pixels
height       height in pixels
framerate    framerate in Hz
aspect       aspect ratio 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
margins      0=margins disabled, 1=margins enabled
interlace    0=progressive, 1=interlaced
rb           0=normal, 1=reduced blanking

具体可参考官方文档
另外4B有两个hdmi,在设置的时候注意分清楚两者。具体参考官方的这篇文章.
可以这样:

hdmi_ignore_edid=0xa5000080 
[HDMI:0]
  hdmi_cvt 1024 600 60 6
  hdmi_group=2
  hdmi_mode=87
  hdmi_drive=1
  # hdmi_pixel_encoding=2
[HDMI:1]
  hdmi_cvt 1024 600 60 6
  hdmi_group=2
  hdmi_mode=87
  hdmi_drive=1
  # hdmi_pixel_encoding=2

也可以这样:

hdmi_cvt:0 1024 600 60 6
hdmi_group:0=2
hdmi_mode:0=87
hdmi_cvt:1 1024 600 60 6
hdmi_group:1=2
hdmi_mode:1=87

上面的hdmi_drive用来选择hdmi接口是按照dvi输出还是hdmi输出。区别是前者没有声音。

触摸屏电流不足问题

raspberry pi 4b默认输出电流最大600mA,如果你需要稍大一些。可开启

max_usb_current=1

这种方式可以确保最大输出1.2A.但如果用电设备电流可能会激增或者不稳定负载。这时候就一定不要用树莓派供电。设法从外部供电。比如搞一个代供电的usb hub。或者专门给外设设法供电。

系统备份和还原

其实官网已经提供了方法,只是不好找。这是官方网址
归纳一下就是:
1、使用自带的sd card copier工具,实现SD卡复制。这个工具很强大,两个SD卡容量不同也能互相拷贝。在某些需求下省去了备份压缩,再还原的工作。效率很高。
2、使用tar备份home目录。这个有些情况下有用,但作用不大。不过是常规的压缩备份操作。
3、制作sd image。这种方法是linux最常规但有效的方法。关键语句:

#压缩备份
sudo dd bs=4M if=/dev/sdb | gzip > PiOS.img.gz
#还原
gunzip --stdout PiOS.img.gz | sudo dd bs=4M of=/dev/sdb

文中提到的mysql数据库备份,没太关注
至少在64位系统中系统的磁盘不是/dev/sdb,而是/dev/mmcblk0.可以使用df货fdisk查看磁盘。请用真正的磁盘替代教程里的/dev/sdb.目标位置也选择放在适合的位置。
另外需要注意的是有时候压缩后的磁盘可能较大,你的sd卡又是fat32格式的,就会提示“gzip: stdout: File too large”的问题。怎么解决呐?(请注意不一定是这个原因)安装exfat-fuse让rpi支持exfat格式。然后将SD或者U盘格式化成exfat的。(说明一下,系统SD卡和这个备份的SD卡是两张卡。如果你把自己的系统格式化了请自行面壁。)
————————————————————————
其实在测试之后发现直接在树莓派上备份成功率很低。最简单的办法是将SD取出插到linux系统的PC上,运行上面类似的命令即可。使用windows的备份工具也是一个办法。

触摸屏隐藏指针

当我们为raspberry pi添加触摸屏之后,在某些情况下我们希望隐藏指针。有些教程告诉你要下载某些工具比如unclutter实现。其实不用。
直接修改/etc/lightdm/lightdm.conf文件,添加一行:

xserver-command = X -nocursor

重启之后就OK了,当然如果要重新启用,就暂时注释掉这一行然后重启。

桌面图标更换大小的bug

在桌面上更改适合不同尺寸屏幕的时候,图标会自动变化。但是会出现一个意料之外的bug:
不能在资源管理器里面打开终端窗口。继而引起了需要从终端运行的程序,也打不开了。
更高方法是,在弹出的错误窗口之后的串口terminal emulator的地方添加如下命令:“x-terminal-emulator %s”。

uvc摄像头高帧率的修改

(尚在测试,参考https://raspberrypi.stackexchange.com/questions/105800/persistently-increase-usbfs-memory-mb-on-rpi4-running-ubuntu-19)
临时更改测试:

# 查看目前大小
cat  /sys/module/usbcore/parameters/usbfs_memory_mb
# 临时更改大小
sudo sh -c 'echo 256> /sys/module/usbcore/parameters/usbfs_memory_mb'
# 查看更改后大小
cat  /sys/module/usbcore/parameters/usbfs_memory_mb

实际测试之后没有提高帧率,设置成120fps之后,用cv的videocapture采集的速率最快还是倒60fps左右。
永久更改办法:

sudo nano /etc/rc.local
sudo sh -c 'echo 1024 > /sys/module/usbcore/parameters/usbfs_memory_mb' &

rpi-update的终极解决方法

以下方法参考自树莓派论坛@ovdiyuk 的评论

I solved this following way
curl -L https://github.com/Hexxeh/rpi-firmware/archive/master.tar.gz -o master.tar.gz
cd /root/.rpi-firmware && tar -xvzf /root/master.tar.gz
SKIP_DOWNLOAD=1 rpi-update

我的方法是用科学上网或者别的办法从https://github.com/Hexxeh/rpi-firmware/archive/master.tar.gz下载最新的包,然后用scp或者U盘等手段拷贝到树莓派上某个路径,比如~/Downloads。然后cd到/root/.rpi-firware目录将master.tar.gz解压至此处。然后再用sudo SKIP_DOWNLOAD=1 rpi-update
需要注意的是一般权限不能cd 到/root中。需要用sudo -i切换到root权限
因为下载的时候打包了一层,可能解压之后不能直接升级。需要将解压之后的文件夹内的内容拷贝出来

sudo -i
cd /root
rm -rf .rpi-firmware
tar -xvzf /home/pi/Downloads/rpi-firmware-master.tar.gz
mv rpi-firmware/ .rpi-firmware/
SKIP_DOWNLOAD=1  UPDATE_SELF=0 rpi-update
exit

不知道什么原因我的一直不能UPDATE_SELF,所以只能把UPDATE_SELF设置为0.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值