本文同步自(最佳显示效果请点击):https://zohead.com/archives/fbvnc-v1-0-2/ 由于在 Raspberry Pi 上习惯使用 framebuffer 进行普通使用的关系,在需要用 VNC 连接其它机器上,一下想到还是用 framebuffer 下的程序来实现。网上也有别人写的 framebuffer VNC 客户端程序,但普遍有些问题,有些则没有考虑在类似 Raspberry Pi 这种 ARM linux 环境下使用的情况,为此我基于已有的 fbvnc 项目重新弄了个 framebuffer 下 VNC 客户端的程序。 原有 fbvnc 项目地址:http://repo.or.cz/w/fbvnc.git 我的 fbvnc 新项目的 github 地址:https://github.com/zohead/fbvnc 现在已经更新到 1.0.2 版本,相对原始的 fbvnc 的主要改进为: 解决在 16 位及 32 位 framebuffer 下显示不正确的问题; 增加帮助信息和参数选项(fbvnc -h 查看帮助信息); 支持简单的 VNC 用户名密码验证(基于 RFB 协议的 3.3 版本); 支持将 VNC 密码加密保存到密码文件; 支持以命令行参数的形式从密码文件中读取密码,方便自动运行方式; 连接远程 VNC 主机时增加远程 VNC 服务器信息输出,方便调试; 从 VNC 服务器获取版本信息前先发送客户端版本号(3.3 版本),解决某些非常严格的 VNC 服务器(例如:droid VNC server)出现拒绝访问的问题; 连接远程 VNC 主机时检查 VNC 版本是否确定以 “RFB ” 开头,如果版本不符合要求则出错退出; 解决在 ARM linux 系统(例如:Raspberry Pi)中鼠标无法正确移动的问题; 连接和断开 VNC 服务器时增加清屏和显示/隐藏光标的处理,防止终端界面紊乱。 此程序已在 Windows/Linux/Android 等不同系统的 VNC 服务器环境下测试过,需要注意的是此 fbvnc 客户端只支持 RFB 3.3 版本的 VNC 服务器,如果使用的是比较新的 RealVNC 服务器(我测试的是最新的 RealVNC 4.6.3 版本),请在服务器设置中修改 VNC 协议版本为 3.3。 请自行到上面的 github 项目地址中检出代码进行编译安装,Raspberry Pi 系统则提供了已经编译好的版本 ^_^。 使用方式很简单,运行: fbvnc 192.168.1.xxx 如果需要密码会提示你输入,完成后就可以看到远程 VNC 主机的画面,其中 192.168.1.xxx 为 VNC 服务器的主机地址,另外也可以增加参数指定 VNC 服务器的端口号(如果不是默认的 5900 端口),运行 fbvnc -h 可以查看帮助信息。 连接上 VNC 服务器之后的操作: 快捷键 操作 Ctrl + 空格 暂停/恢复 图像更新绘制 Ctrl + Alt + C 断开连接并退出 适用于 Raspberry Pi Debian Whezzy 系统的 fbvnc 程序下载链接: http://github.com/downloads/zohead/fbvnc/fbvnc-raspberry-pi-v1.0.2.7z 此程序纯粹为我基于其它项目做个人修改使用的,其中有任何问题请提出指正哦 ^_^
Tag: framebuffer
有关Raspberry Pi 32位framebuffer的问题
本文同步自(最佳显示效果请点击):https://zohead.com/archives/raspberry-pi-32bit-fb-color/ 之前写过一篇 Raspberry Pi(以下简称 RPI) 下使用 fbpdf 即 framebuffer 模式下的 PDF 阅读器的文章(详情请点击 [这里]),文中提到需要修改 config.txt 开启 RPI 的 32 位 framebuffer 支持,但需要注意的是 RPI 的 32 位 framebuffer 并不是真正的 32 位的,其实只有 20120615 种颜色,而且实际上还需要忽略 alpha 位,这在使用 fbpdf 软件看 PDF 时似乎没有太大的问题。 但今天用看图的软件看一张 32 位的桌面截图时,有点傻眼了,效果如下: 大家也能看出来,其实这就是 Windows 7 默认的浅蓝色桌面壁纸图片,但实际的显示颜色完全不对了,而去掉 config.txt 中的 32 位 framebuffer 支持则没问题。 另外据 RPI 上 XBMC 媒体中心软件 Raspbmc 的开发人员介绍,32 位的 framebuffer 下 XBMC 软件也会存在问题,由此看来 RPI 默认将 framebuffer 的颜色深度设置为 16 位是有其道理的。 上面的 fbpdf 文章中的 fbpdf 程序已经更新为 16 位 framebuffer 的版本,如果对此有不同见解的欢迎提出指正哦。 ^_^
Raspberry Pi framebuffer PDF阅读器 - fbpdf
本文同步自(最佳显示效果请点击):https://zohead.com/archives/raspberry-pi-fbpdf/ 最近拷了几个 PDF 电子书到 Raspberry Pi 树莓派小主板系统上,准备小充下电,结果在 Debian Wheezy Raspbian 的 Linux X11 系统下用以前用的 xpdf 软件看 PDF 的不爽:由于 Raspberry Pi 的 CPU 是 ARMv6 700MHz 的,性能一般,而且内存只有 256MB,所以跑 Linux X11 虽然没什么问题,但老感觉看大一点的 PDF 有点拖顿。 后来装了比较小巧的 mupdf 软件(Raspbian 系统的话直接用 apt-get install mupdf 命令就可以安装)之后在 X11 环境下看 PDF 电子书似乎情况好了很多,mupdf 功能很简单,甚至都没有独立的启动方式,直接双击 PDF 文件运行,或者通过命令行方式运行,主界面也没有工具栏之类的多余东西,操作全部键盘来完成,浏览 PDF 的速度也很快,对中文支持也很好。关于 mupdf 的介绍请参考其官网:http://www.mupdf.com/。 后来想到平时用 Raspberry Pi 主要还是用命令行模式,我对 Linux X11 一向比较反感 ^_^,感觉是不是可以直接用 framebuffer 的形式看 PDF,结果还真找到一个 fbpdf 软件。 fbpdf 是基于 mupdf 的代码基础上实现的纯 framebuffer 下的 PDF 阅读器,和 mupdf 的功能基本相当,用这个可以省去 X11 和 GTK+ 等一堆臃肿的玩意,在 framebuffer 上看不仅速度快而且占用内存也小,并且可以充分利用 Raspberry Pi 上 framebuffer 的硬件加速。但不幸的是 Raspberry Pi 的 Raspbian 源中没有 fbpdf 包,看来只能自己编译了。 fbpdf 的 Git 版本库地址(可以直接用 git clone 命令弄下来哦): http://repo.or.cz/w/fbpdf.git 首先到 mupdf 官网下载 mupdf 源代码和 mupdf-thirdparty 第三方程序的源代码: http://www.mupdf.com/download/mupdf-1.1-source.tar.gz http://www.mupdf.com/download/mupdf-thirdparty.zip 需要说明的是我的编译环境是 armhf 的 Raspbian 默认开发环境。编译 mupdf 之前需要先安装 libfreetype6-dev、libjbig2dec0-dev、libjpeg8-dev 等开发软件包。mupdf 编译安装好之后会产生 fitz 库的头文件和静态库文件 libfitz.a,libfitz.a 在编译 fbpdf 时需要用到。 特别需要注意的是 mupdf 和 fbpdf 使用的是修改过的 openjpeg-1.5.0 版本的 openjpeg 库,不能直接使用 Raspbian 系统中的 libopenjpeg2 库,因此需要先编译 mupdf-thirdparty 中的 openjpeg-1.5.0 库,为了防止和 Raspbian 默认的 openjpeg 库冲突,建议将 openjpeg-1.5.0 库安装到自定义的目录(非 /usr/lib、/usr/local/lib 等系统默认使用的目录),然后编译 fbpdf 时直接使用 openjpeg-1.5.0 产生的静态库文件 libopenjpeg.a。 在 Raspberry Pi 编译 fbpdf 时会有一些小报错,需要修改下代码和 Makefile,编译 fbpdf 时由于要使用 libfitz.a 静态库,因此生成的 fbpdf 可执行文件也会比较大(我编译产生的将近 6MB)。 在 Raspbian 系统的默认 framebuffer 文本终端下运行 fbpdf /home/xxx.pdf (/home/xxx.pdf 为 PDF 文件的路径)就可以查看 PDF 文件了,你的 Raspberry Pi 在用 fbpdf 打开 PDF 时很可能会遇到这个错误直接退出:fbpdf: fbval_t doesn’t match fb depth。 简单说明下这个错误的原因: fbpdf 程序中默认使用的 framebuffer 颜色数(BPP)是 32 位的,但 Raspberry Pi 默认的 framebuffer 只使用 16 位颜色(也就是下面的 framebuffer_depth 默认为 16),这样 fbpdf 程序运行时检查 framebuffer 参数发现不匹配就会报上面的错误,我尝试过跳过这项检查可以不报错,但 PDF 文件的显示渲染效果相当差。 解决方法也是必须要有的: 注意:不建议使用此方法,建议直接使用最下面的 16 位 framebuffer 版本。 打开启动分区下的 config.txt 配置文件(路径为:/boot/config.txt),加入下面两行然后重启系统就可以解决: framebuffer_depth=32 framebuffer_ignore_alpha=1 第一行 framebuffer_depth=32 指定 Raspberry Pi 的 framebuffer 使用 32 位颜色,第二行 framebuffer_ignore_alpha=1 是在使用 32 位颜色时才需要指定的,表示忽略 ARGB 颜色中的 alpha 通道。需要说明的是即使 config.txt 配置文件中指定了使用 32 位实际上也只有 20120615 种颜色的哦,不过对使用上没有影响的。 有关 Raspberry Pi 的 config.txt 配置文件的详细说明请参考这里:http://elinux.org/RPi_config.txt。 把上面的配置文件修改好重启之后,下面是用我编译好的 fbpdf 程序查看一个 5MB 的 PDF 电子书的截图,在 Raspberry Pi 这样的微型板上速度是相当之快的: 从截图中可以看到图片和中文都是可以正常显示的哦。 framebuffer 模式下的 fbpdf 也是全部通过键盘操作,不过快捷键和 mupdf 是不同的,将常用的快捷键简单介绍如下(注意是 J、K 等单按键是区分大小写的哦),大多数快捷键都可以在前面加数字指定次数之类的(深得 VI 的精髓啊,哈哈)。具体请参考 fbpdf 代码中的 README 说明文档: 快捷键 操作 Ctrl + F 或 J 下一页(5J 跳至下面第 5 页,6J 类推) Ctrl + B 或 K […]