Skip to main content

15 posts tagged with "raspberrypi"

View All Tags

树莓派4b更换清华源(buster)

· One min read

解决方案

修改`/etc/apt/sources.list.d/raspi.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

修改之后更新`sudo apt update`

ubuntu修改ssh登录提示信息

· One min read

需求场景

ssh 登录时,往往需要了解一些基本信息,如果每次登录都手动运行命令就太麻烦了。比如在 ssh 登录树莓派时,想要查看 cpu 温度和电压。

解决方案

/etc/profile.d/新增 temp-volt.sh 脚本文件,具体代码如下

#换行
echo ''
#运行命令查看cpu温度
#echo `vcgencmd measure_temp`
#执行脚本文件
source ~/raspberry-power-supply-check.sh

树莓派4b实现家庭监控mjpg-streamer

· 2 min read

打开树莓派配置的camera开关

可以通过gui界面或者sudo raspi-config打开,详细方式不再赘述

编译环境

sudo apt-get install cmake libjpeg8-dev
sudo apt-get install gcc g++

编译安装

git clone https://github.com/jacksonliam/mjpg-streamer
cd mjpg-streamer/mjpg-streamer-experimental
make
sudo make install

CSI摄像头启动

cd mjpg-streamer-experimental
./mjpg_streamer -i "input_raspicam.so" -o "output_http.so -w ./www"
#指定端口需要密码访问
#./mjpg_streamer -i "input_raspicam.so" -o "output_http.so -w ./www -p 8282 -c usename:password"

usb摄像头启动

cd mjpg-streamer-experimental
./mjpg_streamer -i "input_uvc.so" -o "output_http.so -w ./www"

根据摄像头实际情况启动,之后就可以在localhost:8080端口看到实时画面了

参数说明

./mjpg_streamer  -i "input_uvc.so --help"
./mjpg_streamer -o "output_http.so --help"

参考文档

mjpg-streamer

后续探索

目前已经可以看到实时画面了,不过作为监控功能还是不太够,比如需要保存视频。在mjpg-streamer的github上可以看到output_file插件可以满足部分需求,详细参数可以通过./mjpg_streamer -o "output_file.so --help查看,有时候不需要一直保存视频,只是希望出现人的时候再保存视频,在github的pull-requests中有相关的motion_detect插件,不过维护者并没有合并到主分支,有兴趣的大佬可以试试。

开机启动

参考systemctl设置开机启动,管理service

树莓派4b low voltage warning

· 4 min read

需求场景

用的好好的树莓派,有一天连接 vnc,发现桌面任务栏一直提示 low voltage warning,please check your power supply,看样子是供电不足,可是树莓派的负载并不高啊。

解决方案

搜了一大圈基本都是说电源的问题,电源确实不是官方的,可能质量不太好,可是之前一直没问题,怎么突然就有问题,连一年都没到啊。现在树莓派挂了一个小风扇,一个固态硬盘,负载只有 0.2 左右。后来终于搜到一个可能的原因。电源长时间充电会导致降压,断电后过一段时间就可以了。我的树莓派已经好几个月通电没关机了,有可能是这个原因。然后我就把树莓派的电源断了一晚睡觉了,第二天再接通,果然问题解决了。掌握了一个小知识啊,电源长时间充电还会降压啊,可能是山寨电源的原因吧

2020-12-30 日更新

继上次出现问题解决后,两周后再次出现这个问题,这次又断电睡觉了,第二天都好了。两次都是断电一整晚,第二天就好了。测试过只是通过命令重启树莓派是不能解决的,那到底断电多久是可以恢复的呢?下次遇到再测试一下吧

2021-02-28 日更新

再次出现此问题,关闭电源 5 秒后重启恢复正常。

2021-05-06 日更新

由于这个提示只有在连接显示器或 vnc 连接时才能在 gui 桌面任务栏看到,如果是 ssh 登录就看不到了,非常的不方便。最好是能够通过命令判断是否电压不足。具体的脚本详见 https://gist.github.com/maxme/d5f000c84a4313aa531288c35c3a8887
通过此脚本可以查看 cpu 和电压不足的问题。不过每次登录之后需要手动运行,实在不方面。而且脚本中采用了 while 循环需要手动中断脚本。所以可以把代码中的 while 循环去掉,并且在 ssh 登录的时候执行命令病输出到登录信息上。效果如下,具体方式参考 ubuntu 修改 ssh 登录提示信息
修改后的raspberry-power-supply-check.sh代码如下

#!/bin/bash
function throttleCodeMask {
perl -e "printf \"%s\", $1 & $2 ? \"$3\" : \"$4\""
}
function throttledToText {
throttledCode=$1
throttleCodeMask $throttledCode 0x80000 "Soft temperature limit has occurred, " ""
throttleCodeMask $throttledCode 0x40000 "Throttling has occurred, " ""
throttleCodeMask $throttledCode 0x20000 "Arm frequency capping has occurred, " ""
throttleCodeMask $throttledCode 0x10000 "Under-voltage has occurred, " ""
throttleCodeMask $throttledCode 0x8 "Soft temperature limit active, " ""
throttleCodeMask $throttledCode 0x4 "Currently throttled, " ""
throttleCodeMask $throttledCode 0x2 "Arm frequency capped, " ""
throttleCodeMask $throttledCode 0x1 "Under-voltage detected, " ""
}
temp=$(vcgencmd measure_temp | cut -f2 -d=)
real_clock_speed=$(vcgencmd measure_clock arm | awk -F"=" '{printf ("%0.0f", $2 / 1000000); }' )
sys_clock_speed=$(awk '{printf ("%0.0f",$1/1000); }' </sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq)
voltage=$(vcgencmd measure_volts | cut -f2 -d= | sed 's/000//')
throttled_text=$(throttledToText $(vcgencmd get_throttled | cut -f2 -d=))
echo "$temp $sys_clock_speed / $real_clock_speed MHz $voltage - $throttled_text"

树莓派4b docker安装nextcloud打造私有云盘

· One min read

安装方式

nextcloud是基于php开发,可以通过lamp方式安装,不过我选择了docker安装的方式,因为比较简单方便。

步骤一:安装nextcloud

docker pull nextcloud
mkdir /data/nextcloud
docker run --name nextcloud -p 8080:80 -v /data/nextcloud:/var/www/html/data -d nextcloud

如果docker安装nextcloud太慢,可以参考docker修改国内镜像源

步骤二:初始化nextcloud

通过http://localhost:8080打开网站,可以看到初始化界面,默认数据库是sqlite,如果需要连接mysql等,注意将host地址改为http://xx.xx.xx.xx:3306,这个数据库可以是本地的,也可以是云端服务器的。

其他说明

如果需要通过域名访问这个地址,需要在/var/www/html/config/config.php配置文件中的trusted_domains加入这个域名

树莓派4b安装seafile私有网盘

· One min read

安装方式

一开始考虑使用docker安装,不过失败了,并没有arm的docker镜像,后来在官网看到了树莓派的版本,记录一下安装方式。

步骤一:下载解压安装包

数莓派服务端安装包地址,根据自己的树莓派系统下载对应的版本。

cd  ~
mkdir seafile
cd seafile
wegt https://github.com/haiwen/seafile-rpi/releases/download/v7.1.5/seafile-server-7.1.5-buster-armv7.tar.gz
tar -zxvf seafile-server-7.1.5-buster-armv7.tar.gz

步骤二:初始化

cd ~/seafile/seafile-server-7.1.5
./setup-seafile.sh

步骤三:启动项目

cd ~/seafile/seafile-server-7.1.5
./seafile.sh start #启动seafile服务默认端口8082
./seahub.sh start #启动seafile web端默认端口8000

之后就可以通过http://127.0.0.1:8000访问了

步骤四:设置开机启动(可选)

详细参考systemctl设置开机启动,管理service

树莓派vnc连接显示too many security failures?

· 2 min read

场景复现

家里一台电脑可通过局域网ip用vncviewer访问树莓派,由于在树莓派上搭建了frp服务,所以公司电脑也可以访问vnc访问树莓派,现在出现的异常情况是,公司电脑突然不能vnc连接了,连接显示too many security failures,具体原因不详。

网上解决方案

搜了一大圈,基本是以下几个方案:
方案一:说是触发了VNC的安全保护机制。需要重置BlacklistTimeout和BlacklistThreshold,说这种解决方案的都是ubuntu等系统,树莓派的vnc server是realvnc,不一样,行不通。

sudo vncconfig -display :1 -set BlacklistTimeout=0 -set BlacklistThreshold=1000000
sudo vncconfig -display :1 -set BlacklistTimeout=600000000000 -set BlacklistThreshold=10

方案二:杀掉vnc server进程,重新启动

sudo vncserver -kill :1
sudo vncserver :1

方向是对了,可实际试验并没有用,可能vnc server也不是realvnc吧

最终解决方案

重启vnc server

sudo systemctl restart vncserver-x11-serviced.service 

官方解释

Too many security failures

树莓派远程唤醒mac(wake on lan)

· 2 min read

需求场景

公司的电脑性能不太行,编译代码太慢。所以希望在公司电脑上开发,家里电脑负责编译上传。可以通过远程桌面控制家里电脑,不过远程桌面都要求电脑处于工作状态。不在家时电脑一般都是休眠状态,这样就需要可以一个唤醒电脑的操作,然后再使用远程桌面。当然可以家里电脑24小时不休眠就不存在这个问题了。(为了省点电费,恰好手里又有闲置的树莓派就可以很简单的实现了)

设备清单

imac(mac电脑主板均支持wake on lan)
树莓派(一台局域网设备)
公网ip(可选,远程唤醒)

具体步骤

树莓派安装etherwake工具sudo apt install etherwake,安装之后通过sudo etherwake mac地址(如:31:6G:11:66:3f:5d)命令唤醒同一局域网的imac电脑。

远程唤醒

需要有公网ip,远程登录树莓派唤醒imac即可。具体实现方式参考基于frp快速搭建内网穿透工具

其他说明

这里的唤醒电脑有几点要求(说明)。

  • 第一电脑必须处于开机状态。
  • 第二只是将电脑从休眠状态唤醒,并不会解开电脑设置的锁屏状态。

ubuntu安装samba文件共享系统

· One min read

安装软件包

sudo apt install samba

修改配置文件

sudo vim /etc/samba/smb.conf
新增以下配置

[shared]
comment = shared directory
path = /data/shared
public = yes
writable = yes
available = yes
browsable = yes
create mask = 0777
directory mask = 0777

修改目录权限

chmod 777 -R /data/shared家庭局域网环境下给777即可

测试参数是否正确

testparm

重启samba

sudo systemctl restart smbd