前情提要
上一篇文章中刷了YYF固件(Android),安装Kodi用于看片,安装Entware环境用于PT挂机和媒体服务器。经评论区提醒Android下的Kodi画质不如CoreELEC下的,而且CoreELEC是纯精简版Linux,相比Android没有中间商赚取差价,效率更高。只是装不了Android APP了,影响不大,遂折腾。
至于旁路由,能够更充分的利用N1,主要功能是科学和屏蔽广告,因为是OpenWrt要再加点什么功能也比较方便。
CoreELEC
CoreELEC是一个专为Kodi打造的精简LInux发行版,据说是专门优化的,播放效果和兼容性比Android上的Kodi好很多,还具有一些影音方面的高级功能,比较适合影视爱好者。
写入U盘
首先N1需要降级才能用各种固件,这部分请参考别的文章。
CoreELEC镜像使用恩山论坛
M大的版本
,已经对N1做好了适配,目前更新到
9.2
。为了后面使用OpenWrt,需要安装
9.0.2
版(因为需要更新内核,只找到
9.0.1
和
9.0.2
有适配的新内核)
首先通过Etcher写入镜像到u盘,N1插上U盘重启,默认就会引导U盘内的系统,第一次启动可能时间长一些。
这时候需要一个鼠标,启动后要关闭自动更新(因为固件是修改适配N1的,更新官方的就开不出来了),进行语言、网络等设置。
具体使用和App版的Kodi并没有区别。
写入EMMC
另一种方式是写到EMMC(内部存储),这样就替换了原来的Android系统。
ssh root@N1的IP
登陆系统,默认密码“coreelec”。执行
/flash/installtoemmc
执行写入EMMC的命令。(需要注意的是
9.0.2
以上版本使用
/flash/installtoemmc
,旧版使用
/flash/installtointernal
)
等执行完成重启并拔掉U盘就可以了。
如果你写到eMMC后,想刷回安卓系统,其实很简单就可以刷回W大的官改固件,只需按照刷官改的方法,准备好usb burning tool,加载固件,点击“开始”刷机,然后ssh登录到CoreELEC系统,执行:reboot update命令,N1会自动重启,然后进入刷机模式,等待刷机完成即可。
Entware
安装非常简单
installentware
,安装完成后重启,
opkg update
更新软件源,安装上Transmission等软件就可以实现之前在安卓下的下载机和媒体服务器了(详见前一篇)。
蓝牙遥控问题
如果是同款遥控器,需要用到 这个帖子 的适配文件,复制到
/storage/.kodi/userdata/keymaps/
路径下,重启N1即可使用。不过有个Bug,在输入界面会出现自动输入‘i’的情况,导致无法正常输入,不过论坛里的大神已经在帖子下面回复了解决办法。
在系统-插件里面按‘system tools’这个插件,然后SSH登陆。
执行
systemctl stop kodi
systemctl stop eventlircd
evtest
接着
vi ~/.config/hwdb.d/99-iprc1000.hwdb
修改文件为(注意格式,有空格)
#IPRC1000 remote
evdev:input:b*v0A5Cp8502*
KEYBOARD_KEY_7000c=unknown
然后执行
systemd-hwdb update
udevadm trigger
reboot
重启后就可以正常使用了,不过还有个问题是遥控器蓝牙长时间不用断开后,再次按键需要很久才能连上使用,在Android下没有这个问题。。。
旁路由
替换内核
由于CoreELEC自带内核过于精简,缺少某些功能(IPSET),导致OpenWRT下包括科学等一些插件启动不了,有人做了新的内核,只要简单地替换就可以了。( 这个Docker镜像的说明中 提供了一种不用替换内核添加IPSET功能的办法,尚未尝试)
下载 新的内核 (9.0.2版)
如果是U盘启动,直接替换U盘下
/flash/kernel.img
即可。
如果是EMMC启动,先把文件传到N1,执行
mount -o rw,remount /flash
挂载分区为可写,再替换
/flash/kernel.img
。
如果已经装了新版本的CoreELEC,并且配置了一堆东西不想重新装旧版(像我一样),也是有办法的。下载恩山论坛 M大帖子 里面的“升级脚本”,没错,升级脚本是可以降级的。。。原理就是替换system分区和内核。然后按照上面写的同样操作就可以了。
不过降级换内核后,我一连接蓝牙遥控器就卡死,只能用App控制了,不知道是内核的问题还是降级的问题。。。
Docker 和OpenWRT安装
Docker是一个容器,有些东西跑一下需要一堆配置,用Docker就可以直接拉取别人做好的镜像,简单设置就可以使用,而且有虚拟化的功能,OpenWRT就是独立安装在这样一个容器下的。
在CoreELEC下安装比较简单,在Kodi插件-服务程序下可以找到Docker,由于网络原因特别慢,可能需要等上一会儿或是多试几次。
安装后就可以SSH登陆,
docker pull kanshudj/n1-openwrtgateway
抓取镜像(这个镜像还有个R9版本,功能更多),这一步可能也要很长时间,取决于网络。
开启网卡混杂模式ip link set eth0 promisc on
创建Macvlan复用网卡,用于虚拟主机接入局域网,这里的gateway和subnet根据自己的网段设置docker network create -d macvlan –subnet=192.168.2.0/24 –gateway=192.168.2.1 -o parent=eth0 macnet
创建名为op的OpenWRT容器docker run –name op –restart always -d –network macnet –privileged kanshudj/n1-openwrtgateway /sbin/init
创建成功后,启动容器的bash进行设置docker exec -it op /bin/bash
修改网关IP等信息
vi /etc/config/network
停用防火墙(之前没有这么操作,客户端一直连不上网)/etc/init.d/firewall disable&&/etc/init.d/firewall stop
重启网络
/etc/init.d/network restart
exit
退出到CoreELEC环境下后,重启容器
docker restart op
这时候尝试打开
http://192.168.2.20
(改成自己设置的),出现OpenWRT登陆界面,默认密码是“password”
客户端设置
成功配置并运行OpenWRT后,在客户端设置网关和DNS为容器的IP,我设置的是
192.168.2.20
,如能成功上网,即配置成功。
旁路由功能
这个固件默认只有DDNS、广告过滤和科学功能,在服务中可以配置启用,这个版本的科学功能只支持“绕过大陆IP”模式,如需要“某list模式”和更多的功能,可以使用
kanshudj/n1-openwrtgateway:r9.10.1
这个镜像。科学功能使用的PDNSD默认使用OpenDNS,有些域名如“sogou.com”会解析不了,修改成阿里和腾讯的DNS服务器即可。
vi /etc/pdnsd.conf
找到
label = “opendns”;
将下面的ip改成
223.5.5.5, 119.29.29.29
。
我这里还加了一个解除黄逸云锁定的功能,是用的 这个插件 。
这个插件依赖
curl
和
node
,先安装一下
opkg update && opkg install curl && opkg install node
安装插件
opkg install luci-app-unblockneteasemusic_2.7-1_all.ipk
这个插件有个问题就是在Web界面设置的时候不能启动,需要手动执行
/etc/init.d/unblockneteasemusic start
启动。可以在系统-启动项-本地启动脚本中添加这条开机自动执行。
默认情况下客户端会自动生效,IOS和MAC需要安装 证书 并信任。
体验
需要的设备设置网关,出了问题别的设备也能正常使用。和原来一样在局域网中,Homekit等各种服务也能正常使用。
测试了一下,带宽没什么损失,手机上玩游戏也没有跳ping,延迟和直连路由器差不多,看来N1的性能跑这几个小东西还是绰绰有余。
还有就是绕过国内IP模式的话,BT/PT的国外流量也会被代理,其他的东西也多多少少会受影响,后面可能会换个其它方式吧。
参考
https://post.smzdm.com/p/a25r675q/
https://zorz.cc/post/n1-docker-openwrt.html
https://www.right.com.cn/forum/thread-740477-1-1.html
https://www.gitmemory.com/issue/kob/N1/2/509879330
https://www.right.com.cn/forum/thread-331363-1-2.html
https://www.gitmemory.com/issue/kob/N1/2/509879330