前情提要

上一篇文章中刷了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.19.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,如能成功上网,即配置成功。

旁路由功能

  1. 自带插件
    这个固件默认只有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

  1. 插件安装
    我这里还加了一个解除黄逸云锁定的功能,是用的这个插件

这个插件依赖curlnode,先安装一下opkg update && opkg install curl && opkg install node

然后下载插件包
wget https://github.com/project-openwrt/luci-app-unblockneteasemusic/releases/download/v2.7-1/luci-app-unblockneteasemusic_2.7-1_all.ipk

安装插件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