Tag: Raspberry Pi

framebuffer VNC客户端 fbvnc-v1.0.2

本文同步自(最佳显示效果请点击):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...

发布PPTV XBMC视频插件v1.0

本文同步自(最佳显示效果请点击):https://zohead.com/archives/pptv-xbmc-plugin/ 最近认识一位朋友想要在 XBMC 多媒体中心软件(http://www.xbmc.org/)上观看 PPTV(http://www.pptv.com/) 视频网站上的视频,看到有 Windows 上的 XBMC PPTV 插件,但都没法在我的 Raspberry Pi 微型电脑板上(板子虽小也支持播放 1080p 高清视频哦)运行,于是想着自己写个能够跨平台的 PPTV 视频的 XBMC 插件,顺便也拿这个练练 Python,HOHO。 既然要跨平台,那首先考虑必须全部用 XBMC 自带的 Python 脚本实现,不能调用 Windows 上 DLL 之类的鬼玩意,而且 Raspberry Pi 的 armhf 系统上也几乎不可能有 PPTV 的动态库可以用的。 基本原理: 通过 Python 插件发送 HTTP 请求时伪装成 iPad 客户端从 PPTV 网站上获取频道列表、视频列表、查询视频,并得到视频的实际 m3u 和 m3u8 地址。后来发现此方法得到的 m3u 和 m3u8 视频地址在 Raspberry Pi 系统中播放有问题,而且不太好直接解决。没办法,咱拿起 Wireshark 抓包神器,终于发现了 PPTV 未公开的 API 方法(其实 PPTV 一直从未公开,哈哈)得到网页 Flash 方式播放的视频地址。不过其中有个视频 key 的问题,没什么太好办法在 Python 中直接得到。最终想到通过 [硕鼠] 网站解决,硕鼠网站得到的 PPTV 视频地址明显有问题,但有个可用之处就是他能通过 Flash 得到 PPTV 的视频 key,那就省点事从硕鼠得到视频 key,从 PPTV 未公开 API 构造视频链接和分段信息(用过 Python 自带的 json 库),最终得到真实的视频地址。 有关 XBMC 的插件编写详细请参考这些链接: http://wiki.xbmc.org/index.php?title=HOW-TO:Write_plugins_for_XBMC http://wiki.xbmc.org/index.php?title=Python_development http://wiki.xbmc.org/index.php?title=Add-on_development 其中遇到的一个问题就是 HTML 的解析问题,刚开始使用的是比较成熟好用的一个 Python 插件:Beautiful Soup。这个插件的最大优势就是对不标准的 HTML 的容错性做的非常好,而且各种查找 HTML DOM 结构的函数也很强大。那就按照 Beautiful Soup 的要求解析 PPTV 的 HTML DOM,结果顺利取得,不久就发现一个问题,在 Raspberry Pi 这种比较弱的嵌入式板子上,下载 HTML 倒挺快,通过 Beautiful Soup 解析查找 HTML DOM 竟然要用去 15 秒左右的时间,这完全无法忍受,可以寻找替代品。 最终在 XBMC 的论坛里发现了比较好的 HTML parser 替代品:Parsedom XBMC Add-on。这是直接包含在 XBMC 库中的一个简单的 HTML DOM 解析扩展,import 之,下载 HTML 然后按照 class、按照 id 解析 HTML 的速度都在 1-2 秒之间,非常满意。后来使用中又发现...

有关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 等系统默认使用的目录),然后编译...

Raspberry Pi十六进制编辑器wxHexEditor

本文同步自(最佳显示效果请点击):https://zohead.com/archives/raspberry-pi-wxhexeditor/ 最近在 Raspberry Pi 编程时需要对文件进行十六进制编辑,原来一直用的 vim 配合 xxd 来实现的,但用起来还是各种不方便,在切换到 X11 界面时,想着能不能直接装个图形的编辑器来方便操作。 简单搜索之后发现 Linux 环境下好用的十六进制编辑器确实太少了,原来用的 Ghex 软件由于必须要 GNOME 环境支持果断放弃,UltraEdit 软件已经移植到 Linux 下,但由于是闭源的只有 X86 下的版本。装了这个 Bless Hex Editor 软件,是基于 Mono 实现的,但发现有一些非正常退出的 bug,还是弃用之。 最后发现的 wxHexEditor 看起来很不错,基于 wxWidgets 实现,因此实现了 Windows、Linux、Mac OS X 跨平台,而且速度也挺好,不会一下装载整个文件,这对编辑大文件非常有用,填补了 Linux 上缺少好的十六进制编辑器的空白,看看 Linux 上的运行截图: 想直接在线安装 wxHexEditor 发现有问题了,Raspberry Pi 的默认 Debian Wheezy 发行版中没有这个软件,需要自己来编译了,首先到其官网下载源代码包:http://www.wxhexeditor.org/。 首先 Raspberry Pi 需要相对完整点的开发环境,gcc、make、g++、autoconf、libtool 等一些开发工具包都是需要安装的。准备好之后使用 apt-get install libwxgtk2.8-dev 命令先在 Raspberry Pi 系统中安装 wxWidgets 的最新版本的库文件(自动依赖并安装)和开发包。然后进入解压缩出来的 wxHexEditor 源代码目录,运行 make OPTFLAGS="-fopenmp" 命令就可以进行编译,粗略估计编译需耗时 15 分钟左右(有点汗...)。 不想自己的编译的童鞋欢迎使用我编译好的版本哦,解压缩把 wxHexEditor 文件拷到 /usr/bin 之类的路径即可,要运行此程序最少要安装 wxWidgets 运行库哦(apt-get install libwxgtk2.8-0),需要注意此文件只在 Raspberry Pi 的 Debian Wheezy hardhf 版本系统中可用: http://miseal.googlecode.com/files/wxHexEditor-v0.20.7z

修改XBMC LiveStreams Python插件以支持中文

本文同步自(最佳显示效果请点击):https://zohead.com/archives/xbmc-livestreams-cn-patch/ 最近在闲时捣鼓下 Raspberry Pi 微型电脑板上的开源 XBMC 应用准备看看 HTPC 媒体中心的效果,发现 Raspberry Pi 在安装了 XBian 系统之后可以比较好的实现 XBMC 的基本功能,虽然由于 Raspberry Pi 没有购买一些视频格式的软件解码授权而导致 WMV 或者 MMS 之类的格式无法播放,但对于常用的一些 H264 的高清视频已经足以应付,接上网线之后看高清在线视频点播和直播的效果都还可以。 有关 Raspberry Pi 请参考 [之前] 的文章,有关 XBian 之一专门为 Raspberry Pi 优化的 XBMC 系统可以访问其官网:http://xbian.org/。 注:Raspberry Pi 上除了 XBian 之外,还有 Raspbmc、Openelec 等其它合适的 XBMC 系统可供选择的。而且这些都是基于标准 XBMC 程序修改的,标准插件之类的基本可以通用。 前两天找到一个不错的在线电视直播的 XBMC 插件:LiveStreams,此插件可以由用户自己修改 XML 配置文件增加在线直播的地址,根据实际硬件配置不同,可支持 MMS、RTSP、RTMP 等各种不同的流媒体协议。有关 LiveStreams 的介绍和配置请参考这些链接(特别第二个链接中有详细的截图介绍): http://forum.xbmc.org/showthread.php?tid=97116 http://www.xbmchub.com/blog/2012/04/26/adding-custom-xml-files-to-the-live-streams-addon/ 最新版本的 LiveStreams 插件可以到这里下载:http://code.google.com/p/divingmules-repo/。 在实际使用过程中发现由于 LiveStreams 由于是老外写的,不由自主的就碰到对中文的支持问题,如果添加的 XML 配置文件中节目名称或者节目目录名称包含中文,XBMC 系统中LiveStreams 插件将不能正常工作,直接会出现脚本错误。 简单看了下 LiveStreams 插件的代码,是用 Python 写的,凭着一些简单的 Python 基础,然后集合 Python 的 logging 模块来调试,终于发现 LiveStreams 插件对中文支持不佳的原因,作者在使用 BeautifulSoup(参考 [这里]) 这一个非常知名的 HTML/XML 等解析的库时未考虑非英文环境下的问题,简单做了下修改之后,中文的直播节目和目录名称都可以正常显示了。 顺便再简单说明一下 LiveStreams XML 配置文件嵌套节目目录的方式,这是一个实例 XML 节目配置文件: 第一个节目目录 Channel 1 下面没有子目录,只有 TV1 和 TV2 这两个节目,因此 XML 层次是 channel/items/item。第二个节目目录 Channel 2 下有名为 Sub1 的子目录,Sub1 下又有 Sub TV1 和 Sub TV2 两个节目,这种的 XML 层次则是:channel/subchannels/subchannel/subitems/subitem。 需要注意的是 LiveStreams 的 XML 配置文件必须以 UTF-8 编码格式保存,否则非英文字符将无法正常显示。另外由于 XML 本身格式的原因,XML 内容中的这些字符需要转换(全部为纯英文字符,包括结束的分号): & 转换为 &amp; < 转换为 &lt; > 转换为 &gt; ' 转换为 &apos; " 转换为 &quot; 最后附上我修改过的最新 LiveStreams 1.0.6 版本 XBMC 插件的下载地址:...

Raspberry Pi初步上手

本文同步自(如浏览不正常请点击跳转):https://zohead.com/archives/raspberry-pi-start/ 前段时间听到 Raspberry Pi 微型电脑板(中文名称:树莓派)出来的消息,这是一个只有信用卡大小的售价 35 美元的 ARM 板,运行 Linux 系统,支持高清输出和高清视频播放,适合做各种省电的小应用方案,国外现在研究这个的人也很多,不过当时都需要直接从英国订购,发货时间长而且还要扣掉有点“可观”的税费,故没有很快买。 有关 Raspberry Pi 的详细介绍参考这里: http://en.wikipedia.org/wiki/Raspberry_pi 前两天看到 e络盟 网站上已经有了中国区的 Raspberry Pi 直接网上订购服务,在 e络盟 网站上注册账户并忍受其相当不人性化的支付和下订单方式之后,昨天终于收到寄过来的 Raspberry Pi B型板(售价 + 增值税 + 运费一共 300 天朝币多一点)。包装非常简单,只有裸板。 e络盟 上的 Raspberry Pi 订购链接在此,有兴趣的朋友也可以买来折腾试试:http://cn.element14.com/raspberry-pi/raspbrry-pcba/sbc-raspberry-pi-model-b/dp/2081185 从图上也可以看到 Raspberry Pi 算是麻雀虽小五脏俱全滴,板子中间有树莓派的 LOGO。整板使用 Broadcom BCM2835 SoC(集成 CPU、GPU、DSP、SDRAM),处理器为 ARM1176JZF-S 700 MHz,内存 256 MB,有 HDMI 输出(标准接口)、两个 USB 2.0 接口(支持 USB HUB)、一个 SD 卡插槽、一个百兆以太网卡、音频输出、GPIO 调试接口等,而且整个板子的功率只有 3.5W,可通过 MicroUSB 或者 GPIO 供电,一般的 5V 700mA 或以上的充电器就可以给 Raspberry Pi 供电。 由于 Raspberry Pi 只提供裸板,不提供其它一切配件,这些都要自己来弄了。我这没有支持 HDMI 或者 DVI 的高清显示器,只有老式 VGA,故先在网上淘了一个 HDMI 转 VGA 的转接头(需要注意的是 HDMI 转 DVI 再转 VGA 的方式是行不通的哦)。HDMI 转 VGA 是由数字信号转为模拟型号,必须使用数模转换芯片,因此这种转接头经常会有兼容性问题,购买时需要注意是否兼容。我买的是淘宝上的 鑫魔王 HDMI 转 VGA 线,并且特别买了支持音频输出的转接线(免广告之嫌,不给出链接 ^_^)。 Raspberry Pi 只支持从 SD 卡启动,不支持从 USB 启动,但可以启动好之后将 rootfs 放到 U盘上,为最好地兼容和优化考虑,建议使用 Raspberry Pi 官方网站上的 Raspbian “wheezy” 系统(点击 [这里] 进入下载),为此需要 SD 卡最小得有 2G。从官方网站下载系统后可以直接拷贝到 SD 卡中(dd 或直接对拷,不需要分区)。 由于我使用了 HDMI 转 VGA 装置,为了能正确完美的显示,需要先修改 SD 卡启动分区(FAT16 格式)中的 config.txt 配置文件: hdmi_force_hotplug=1 hdmi_drive=2 hdmi_group=2 hdmi_mode=47 disable_overscan=1 hdmi_force_hotplug、hdmi_drive、hdmi_group 都是为了使 HDMI 转 VGA 能正常工作,hdmi_mode 设置显示输出的分辨率(47 为我的显示器用的 1440 x...