标签 RaspberryPi 下的文章

前言

一直在 RPi v2 上安装 OSMC 作为家用影音播放器(+网络加速服务),
不得不说相较于动辄近千的诸多安卓 OTT 盒子 ,
其性价比可用“奇高”来形容。

上半年升级 X9300D 之后折腾了一阵子各种盒子,
但播放全高清 3D 我仍旧使用 OSMC
(事实上目前因为安卓的 libnfs 性能问题我已基本用回它)。

对基于 Kodi 的 3D 播放方案有兴趣的童鞋可关注此帖
作者会定期更新。

准备

硬件

若想确认硬件上是否支持,
SSH 到 OSMC 执行:

tvservice -m CEA | grep 3D: --color
           mode 4: 1280x720 @ 60Hz 16:9, clock:74MHz progressive 3D:FP|TopBot|SbS-HH
           mode 5: 1920x1080 @ 60Hz 16:9, clock:74MHz interlaced 3D:FP|TopBot|SbS-HH
           mode 19: 1280x720 @ 50Hz 16:9, clock:74MHz progressive 3D:FP|TopBot|SbS-HH
           mode 20: 1920x1080 @ 50Hz 16:9, clock:74MHz interlaced 3D:FP|TopBot|SbS-HH
           mode 32: 1920x1080 @ 24Hz 16:9, clock:74MHz progressive 3D:FP|TopBot|SbS-HH
           mode 34: 1920x1080 @ 30Hz 16:9, clock:74MHz progressive 3D:FP|TopBot

可见我的显示设备支持多种模式下的 FP (即“帧封装”), TAB (亦作 OU ,即“上下”) 和 SBS (即“左右”)格式(可惜不支持 4K 3D );
FP (Frame Packing) 就是我们今天的目标——








- 阅读剩余部分 -

前言

为了提升 OSMC 的使用体验而购买了 Raspberry Pi 2 Model B
于是淘汰了一台 v1Model B 下来(下称 RPi )。
看着 <span style="direction: rtl; unicode-bidi: bidi-override;">egdeLSS</span> 的 Pro 套餐配额每月剩一大半着实心疼,
决定用 RPi 架个家庭网关给 PS4 和 AppleTV 加加速

RPi 上的配置

我的 RPi 安装 Raspbian Jeesie Lite
其它系统大同小异。

配置 <span style="direction: rtl; unicode-bidi: bidi-override;">egdeLSS</span>

先去 <span style="direction: rtl; unicode-bidi: bidi-override;">egdeLSS</span> 官网下载适配 RPi 的 Cli 转换器(下称 SE )并给予执行权限,
执行时会报错 No such file or directory
疑是依赖未解决。
尝试找出依赖:

head -1 SE | cat -A
...
/lib/ld-linux.so.3
...

看来缺少 /lib/ld-linux.so.3
尝试解决

ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3

再次执行不再报错。

配置文件示例可见官网,
细节调整可参考 <span style="direction: rtl; unicode-bidi: bidi-override;">yxorPAH</span> 的文档。
其关键的配置项如下:











- 阅读剩余部分 -

安装

OSMC 的前身是 Raspbmc
有关 Raspbmc 、OpenELECXBian 的多方面对比可参看此文

下载镜像

我使用的 Raspberry Pi Model B (下简称 RPi ),请根据手中设备选择镜像并调整相关步骤。

OSMC 官网 下载适配 Raspberry Pi 1 (ARM11 平台) 的 DiskImage 文件。

将镜像写入 SD 卡

官方建议尽量使用 Class 10 的 SD 卡。

确认 SD 卡的分区名:

$ df -h
Filesystem      Size   Used  Avail Capacity  iused  ifree %iused  Mounted on
/dev/disk1     111Gi  108Gi  2.9Gi    98% 28397796 760858   97%   /
devfs          186Ki  186Ki    0Bi   100%      644      0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0      0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0      0  100%   /home
/dev/disk2s1    69Mi   37Mi   32Mi    55%        0      0  100%   /Volumes/UNTITLED

<!--more-->假设 SD 卡分区名是 disk2s1
取消挂载该分区:

$ sudo diskutil unmount /dev/disk2s1
Volume UNTITLED on disk2s1 unmounted

将之前下载的 img 写入该分区:

注意替换为镜像文件的正确路径,假设文件名为 OSMC_TGT_rbp1_20150412.img

$ sudo dd bs=1m if=/Path/to/the/OSMC_TGT_rbp1_20150412.img of=/dev/rdisk2
256+0 records in
256+0 records out
268435456 bytes transferred in 18.087894 secs (14840614 bytes/sec)

弹出 SD 卡:

$ sudo diskutil eject /dev/rdisk2
Disk /dev/rdisk2 ejected

启动

将 SD 卡插入 RPi 并插入网线后通电,
系统将自行安装并启动。

遥控方法非常多:

  • 推荐通过支持 HDMI CEC 的设备遥控器进行配置;
  • 可使用 Kodi Remote 通过网络遥控;
  • 亦可通过网页进行遥控。

配置

OSMC 基于 Debian 二次开发,基本配置不多赘述。

Hostname

$ sudo hostname Watsberry
$ sudo vi /etc/hosts
::1             Watsberry localhost6.localdomain6 localhost6
127.0.1.1       Watsberry
...
$ sudo vi /etc/hostname
Watsberry
$ hostname
$ hostname -f

更新源

备份后编辑源列表:

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ sudo vi /etc/apt/sources.list

修改内容为:

deb http://mirrordirector.raspbian.org/raspbian jessie main contrib non-free rpi
deb http://apt.osmc.tv jessie main
deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi

再修改配置:

$ sudo vi /etc/apt/preferences

内容为:

Package: *
Pin: release n=wheezy
Pin-Priority: 900
Package: *
Pin: release n=jessie
Pin-Priority: 300
Package: *
Pin: release o=Raspbian
Pin-Priority: -10

现在可以更新:

sudo apt-get update -y
sudo apt-get upgrade -y

SSH

官方说明 ,可知默认用户名密码均为 osmc

首次登录

假设设备当前 IP 是 192.168.1.xxx ,请根据网段情况自行调整。

尝试登录:

$ ssh osmc@192.168.1.xxx

首次登录会自动设置 localeen_US.UTF-8
然后更改密码:

$ passwd

设置密钥登录

远程新建个人 .ssh 目录:

$ mkdir .ssh
$ chmod 700 ~/.ssh

本地通过 scp 上传公钥:

$ scp -P 22 ~/.ssh/id_rsa.pub osmc@192.168.1.xxx:~/.ssh/id_rsa_localbox.pub

远程对其进行授权:

$ cd ~/.ssh
$ cat id_rsa_localbox.pub >> authorized_keys
$ rm id_rsa_localbox.pub
$ chmod 644 ~/.ssh/authorized_keys

大功告成。

新启 Session 尝试连接成功后再禁止密码登录。

NFS

服务端设置

假设 NAS 当前 IP 是 192.168.1.yyy
目标共享目录是 /volume1/videos

NAS 上新建用户 osmc
并设置好相关目录的访问权限。

接着在配置文件 /etc/exports 中增加一行:

/volume1/videos    192.168.1.0/24(rw,async,no_wdelay,insecure,root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

anonuidanongid 需设置成 NAS 系统 nobody 用户的 UIDGID ,更多选项请参考鸟哥的教程

尝试使配置立即生效:

$ /usr/sbin/exportfs -arv

确认是否成功:

$ showmount -e 192.168.1.yyy
Exports list on 192.168.1.yyy:
/volume1/videos                      192.168.1.0/24

客户端设置

假设计划在 OSMC 上将视频目录挂载至 /mnt/videos

先设置文件夹权限:

$ sudo mkdir -p /mnt/videos
$ sudo chmod 755 /mnt/videos
$ sudo chown osmc:osmc /mnt/videos

再根据情况修改测速脚本 test_nfs.shvia

EXPORT="192.168.1.yyy:/volume1/videos"
MNTDIR="/mnt/videos"
TESTFILE="test.mov"

NFSPROTO="udp"
if [[ -n "$1" ]]; then
        NFSPROTO="tcp"
fi
echo "Testing transfer speed of $NFSPROTO on file $EXPORT/$TESTFILE"
echo
for rsize in 8192 16384 32768 65536 131072 262144
do
        if mount | grep $MNTDIR > /dev/null; then
                  sudo umount $MNTDIR
        fi
        sudo mount -t nfs -o rsize=$rsize,$NFSPROTO,cto,noatime,intr,nfsvers=3 $EXPORT $MNTDIR
        mntedrsize=$(cat /proc/mounts | grep $MNTDIR | grep -oE "rsize=[0-9]{4,6}" | grep -oE "[0-9]{4,6}")
        echo $MNTDIR mounted @ rsize \($((mntedrsize/1024))K\), requested rsize \($((rsize/1024))K\)
        sudo dd if=$MNTDIR/$TESTFILE of=/dev/null | grep "copied"
        echo
done
sudo umount $MNTDIR

分别以 udptcp 协议进行测试:

$ ./test_nfs.sh
...
$ ./test_nfs.sh tcp
...

从执行结果中选出最优组合。

假设 udprsize=65536 的组合速度最优。

修改 /etc/fstab 以求启动时挂载,
加上如下一行:

192.168.1.yyy:/volume1/videos /mnt/videos nfs defaults,rsize=65536,udp,cto,noexec,nosuid,nodev,noauto,noatime,intr,x-systemd.automount,nfsvers=3 0 0

请务必加上 nfsvers=3 ,因为 Raspbmc v13.1 五月第二次更新之后默认使用 NFSv4 版本协议进行挂载。

强制重新挂载:

sudo mount -av

无线网络

我使用 TPLink TL-WN725N v2 网卡,其型号为 rtl8188eu

安装驱动

以下两种方式可任选一种。

下载安装

首先查看当前的系统内核版本:

$ uname -a
Linux raspbmc 3.12.21 #2 PREEMPT Wed Jun 11 04:53:06 UTC 2014 armv6l GNU/Linux

得知内核版本为 3.12.21
可以直接下载对应的网卡驱动,
查表可得文件名为 8188eu-20140509.tar.gz
开始安装驱动:

$ wget https://dl.dropboxusercontent.com/u/80256631/8188eu-20140509.tar.gz
$ tar -zxvf 8188eu-20140509.tar.gz
$ sudo install -p -m 644 8188eu.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless
$ sudo insmod /lib/modules/$(uname -r)/kernel/drivers/net/wireless/8188eu.ko
$ sudo depmod -a

编译安装

Repository for stand-alone RTL8188EU driver 下载源文件,
上传并解压,
并将 firmware 移至相应目录:

内核高于 3.10.33+ 则可略过。

$ sudo mv rtl8188eufw.bin /lib/firmware/rtlwifi/
$ sudo chown root:root /lib/firmware/rtlwifi/rtl8188eufw.bin

然后进入源码目录开始编译:

$ make all
$ sudo make install

编译过程亦可参考这里

连接无线网络

首先确认无线网卡已安装完毕:

$ lsusb | grep Realtek
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

确认模块已加载:

$ lsmod | grep 8192
8192cu                458968  0 

安装无线连接的必备包:

$ sudo apt-get install wireless-tools wpasupplicant firmware-realtek 

确认无线配置信息:

$ iwconfig
wlan0     unassociated  Nickname:"<WIFI@REALTEK>"

搜索附近的 Wifi

$ iwlist wlan0 scan

连接至某个 SSID

假设 SSID 是 QuChao.com ,密码是 XXXXXXXXXX

$ wpa_passphrase QuChao.com XXXXXXXXXX
network={
    ssid="QuChao.com"
    #psk="XXXXXXXXXX"
    psk=XXXXXXXXXX0b07e09c22ad51dXXXXXXXXXXd3e343f57d437feecXXXXXXXXXX37
}

将回显内容写入 /etc/wpa_supplicant/wpa_supplicant.conf

network={
    ssid="QuChao.com"
    scan_ssid=1
    proto=WPA2
    key_mgmt=WPA-PSK
    pairwise=CCMP TKIP
    group=CCMP TKIP
    #psk="XXXXXXXXXX"
    psk=XXXXXXXXXX0b07e09c22ad51dXXXXXXXXXXd3e343f57d437feecXXXXXXXXXX37
}

然后配置 /etc/network/interfaces
填入以下内容进行自动连接:

auto lo
iface lo inet loopback

iface eth0 inet dhcp

auto wlan1
allow-hotplug wlan1
iface wlan1 inet dhcp
pre-up wpa_supplicant -B w -D wext -i wlan1 -c /etc/wpa_supplicant/wpa_supplicant.conf
post-down killall -q wpa_supplicant

iface default inet dhcp













- 阅读剩余部分 -