apache代理服务器设置

访问wiki.xmcrtech.com的时候,实际访问的是同一个服务器上8090端口提供的服务

 

树莓派SD卡克隆

SD卡作为树莓派的硬盘,如果能够做到简单的将一张SD卡上的内容复制到另一张上,就可以轻松的将系统和各种配置进行备份和量产了。

作为磁盘,SD卡可以用多中磁盘工具进行克隆,比如Windows下可以用分区助手,linux下可以用dd命令行工具。需要注意的是,SD卡由于厂家和型号的不同,即便是标注容量想通的两张卡,其实际可用容量也是不一样的。如果源SD卡的容量比目标SD卡更大,可以先用磁盘工具将源卡的分区缩小成比实际使用的空间稍微大一点,然后克隆的时候就指定只复制SD卡的前面多少G的内容。

linux

以root用户运行下面代码,将SD卡1(/dev/sdb)克隆到SD卡2(/dev/sdc)上,每次(block)拷贝512字节,总共拷贝14680064个block,也就是7G

也可以将SD卡复制到一个文件中,之后再利用这个文件复制更多的SD卡。

在使用dd命令进行复制的过程中,可以给这个进程发送USR1 signal,让它在命令行输出当前进度

 

linux diff工具

@2:A文件的32行,替换成B文件的33到49行。

@8:A文件的53到57行,替换成B文件的70到74行。注意这里A文件的行号和B文件的行号不一样,这是因为前面B文件相对A文件添加了十几行。

 

ant管理安卓项目

无论是Android Studio还是命令行创建的安卓项目,都会有一个build.xml文件。因此可以用ant进行编译和安装

编译debug版本,生成的apk文件存放在bin目录下

安装debug版本到连接的手机或者模拟器

 

 

git

本地有一个git repository,将其唯一的分支master推送到服务器上。

假定已经在服务器上设置好了git专用的用户git,所在组也是git。

首先以root用户远程登录服务器,在服务器上新建并配置一个新的repository

之后就可以将本地git repository的master分支推送到新的repository里面了

 

树莓派显示屏、触摸屏相关

分辨率设置

hdmi显示屏

设置hdmi_group和hdmi_mode,参考 http://weblogs.asp.net/bleroy/getting-your-raspberry-pi-to-output-the-right-resolution

边框设置

有些屏幕接上之后,你可能会发现有些显示区域超出屏幕边界,看不到显示的内容。或者屏幕边上有部分是黑的,没有用来显示。者可以通过修改/boot/config.txt来调节边框

 横屏/竖屏

树莓派默认横屏显示,需要改成竖屏就要进行旋转显示设置。设置display_rotate,旋转的角度是设置的值乘以90

 触摸屏

触摸屏的设置和显示屏是分开的,参考 https://www.raspberrypi.org/forums/viewtopic.php?p=425962#p425962  以及  https://www.raspberrypi.org/forums/viewtopic.php?p=426246#p426246。修改/usr/share/X11/xorg.conf.d/10-evdev.conf,根据需要设置InvertY和SwapAxes选项。InvertY将Y轴的触摸方向对掉,比如原来手向上的时候鼠标指针向下,手向下鼠标指针向上,就可以通过设置InvertY为True解决。SwapAxes将X轴和Y轴的触摸对掉,比如手原来横向移动的时候指针在垂直方向移动,手垂直方向移动的时候指针在水平方向移动,这就需要将SwapAxes设置为True

树莓派使用RFID-RC522A读卡器对IC卡进行读写(通过 python)

 

本文使用的读卡器

RFID-RC522A

1. 配置树莓派

首先需要运行raspi-config,开启树莓派的spi接口,因为RFID-RC522A读卡器与树莓派之间是通过spi协议进行通信的

https://www.raspberrypi.org/documentation/hardware/raspberrypi/spi/README.md

2. 软件安装

下载并安装SPI-Py

3. 连接树莓派与读卡器

读卡器输出端子 树莓派 Pin # 树莓派 Pin name
SDA 24 GPIO8
SCK 23 GPIO11
MOSI 19 GPIO10
MISO 21 GPIO9
IRQ None None
GND Any Any Ground
RST 22 GPIO25
3.3V 1 3V3

4. 运行测试程序

MFRC522-python 包含了几个对使用读卡器读写IC卡的例子。

测试程序需要以root用户运行,否则权限不够

Read.py读取Sector 8,如果你修改测试程序,让它读取Sector 0的数据,会发现每个Sector是16字节的数据,并且Sector 0的前面四个字节就是这张卡的UID

 

参考资料:http://www.instructables.com/id/Attendance-system-using-Raspberry-Pi-and-NFC-Tag-r/?ALLSTEPS

raspbian(树莓派)系统编译安装linphone 3.8.2

我之前的一篇文章有写过如何在ubuntu下安装linphone 3.7.0。这里讨论如何在raspbian上安装3.8.2版本,虽然操作系统和linphone版本不一样,但大部分安装步骤还是差不多的,这里只列出不同部分

基础软件包

多了libsrtp-dev

belle-sip

polarssl

没有libpolarssl5,安装libpolarssl-dev就行了

belle-sip

git checkout tags/1.4.1

ZRTPCPP

raspbian系统中g++是4.6.3版本,编译ZRTPCPP的时候会报错:cc1plus error unrecognized command line option -std=c++11。需要将g++升级为4.8.2版本,我升级的方式是通过aptitude安装g++-4.8,然后手动更新/usr/bin/g++ 以及 /usr/bin/gcc synbolic link

git checkout tags/V4.3.1

BZRTP

安装linphone之前还得安装BZRTP,直接安装master分支最新版本没问题

Linphone

git checkout tags/3.8.2

需要加-Wno-error选项,否则会出现类似”‘reverse_and_down_scale_32bytes_neon’ defined but not used [-Wunused-function]“的报错。(ubuntu编译3.8.2不需要,树莓派上编译需要指定)

同时configure的时候去掉”enable-zrtp”选项,否则会出现如下报错(安装aptitude里面的libsrtp-dev和github最新版的libsrtp都没有用)

configure: Could not find libsrtp headers or lib, cryto transport disabled.
checking for LIBBZRTP… yes
configure: error: “ZRTP requires SRTP”
configure: error: ./configure failed for mediastreamer2

 

树莓派

树莓派使用文档

https://www.raspberrypi.org/documentation/usage/

测试程序

https://www.raspberrypi.org/documentation/usage/demos/README.md

视频

  1. 摄像头模块安装和启用摄像头模块:

    https://www.raspberrypi.org/documentation/usage/camera/README.md

  2. 命令行工具获取(摄像头模块的)视频、图片。包括保存成视频、图片文件,以及预览视频:
    https://www.raspberrypi.org/documentation/raspbian/applications/camera.md预览摄像头视频:raspivid -t 60000其中-t 60000表示预览60秒。文档中提到可以使用-o选项指定输出设备,比如可以指定将捕获的视频存储成文件,或者直接输出到terminal中》直接输出到terminal中会占用较大的CPU和内存资源,一个是预览的视频会比较卡,而且会出现内存占用过多导致程序异常退出或者卡死
  3. web camera

    https://www.raspberrypi.org/documentation/usage/webcams/README.md

    安装用于读取摄像头图片的工具fswebcam
    sudo apt-get install fswebcam
    读取摄像头的一帧并保存成图片
    fswebcam image.jpg指定分辨率
    fswebcam -r 1280×720 image2.jpg移除图片中的时间条
    fswebcam -r 1280×720 –no-banner image3.jpg

  4. omxplayer 播放视频文件:

    https://www.raspberrypi.org/documentation/usage/video/README.md

音频

aplay或者mplayer播放音频文件

aplay audio-file-name, mplayer audio-file-name

列出usb音频设备,可以列出带麦克风的usb摄像头:

 录音

参考 Voice recorder from Line input. VOX?

如果出现“Channels count non available”的错误,加上”-c 1″或者”-c 2″选项,不同的录音设备的通道数量不同

录音之前,得先打开alsamixer,将Playback的Front Mic Boost和Rear Mic Boost调到最低,Front Mic和Rear Mic静音(或调到最低);将Capture的Front Mic Boost和Rear Mic Boost调到最低。否则会出现很大的杂音。

-d 10表示录制10秒
-D hw:1,0表示录制的音频设备,这里的1和0分别对应前面arecord -l输出中的card和subdevice #

桌面系统

问题重现步骤:

  1. 登录默认桌面之后,注销并选择openbox桌面,输入用户名密码登录
  2. 发现无法成功进入桌面,显示黑色背景,只能看到鼠标,并且重启之后直接进入有问题的桌面,无法选择之前默认的Default Xsession

解决方法:

用ssh远程登录该树莓派,发现~/.dmrc中Session变成了openbox

列出/usr/share/xsessions/目录下有哪些desktop文件

实际上,前面注销的时候,看到的三个选项Default Xsession, LXDE, Openbox分别对应于将~/.dmrc文件中的Session设置成lightdm-xsession,LXDE和Openbox,而这三个值又分别对应于/usr/share/xsessions目录下的同名文件。

因此,解决方法是将前面.dmrc中的Session改成lightdm-xsession(参考 Trying to understand LightDM’s default session

运行update-alternatives –config x-session-manager,确保当前选中的是startlxde-pi(参考 Changing Default X Session

 

 

 

 

磁盘空间

几次出现磁盘空间已满的情况,每次都花了近一个小时,这里把遇到过的情况和解决方法列一下,积累更多经验之后再总结。

磁盘已满的时候,重启之后很有可能进不了桌面,得用ssh远程登录后在命令行操作。如果原本SD卡的空间并没有全部使用(还有未分配的空间),可以将SD卡取出用其他系统进行扩展分区之后在启动树莓派进入桌面。

log文件无限制的持续增长

这种情况记得直接删除log文件就好了。

用rm命令删除文件,不会把文件放到回收站。在文件管理器中删除文件,会将文件放到回收站中。安装了trash-cli软件包之后,也可以在命令行用trash命令将文件放入回收站,或者用trash-empty命令清空回收站。

.xsession-errors或.xsession-errors.old文件过大

系统运行一段时间之后,发现磁盘空间不足,经历过几次重启之后,发现/home/pi目录下这两个文件很大。

可以看到第二个文件有2G多,难怪log文件删除之后还一直是磁盘空间不足。

万能工具箱

以上问题,基本上都可以通过一些命令来检测具体的根源。

df,查看磁盘使用情况

find,查找大文件

这表示在/目录下(递归)查找大于 1G 的文件。