(本文已转载至张大妈

可能是一个太长不看的N1折腾记录,部分内容冗杂,请选择性阅读...

N1本质是某讯理财公司推出的提供一定家庭存储功能的挖矿产品,本质上是Android盒子。由于配置强大,最终在大神破解了Bootloader后,通过刷机实现了各种功能。
网上有关这个盒子文章已是铺天盖地,除了电视盒子,还能充当游戏机NAS路由或是一个“纯粹”的Linux系统,各种固件也是非常成熟,不断涨价依旧是300以内最强

N1-0

购买

理财系产品已经长期被首富家和东哥家屏蔽,目前可以通过某多多进行购买。全新未拆大概在120多,带T1遥控的+40左右,当时嫌麻烦买了刷好的,看成色果然是二手矿机( ̄▽ ̄),没有特殊需求的话还是买全新的好了,刷机也没有多困难。

另外某讯官网也开始卖全新P1+遥控器,只要110多(现在只有五台一起卖的),其实是用了新固件的N1,刷机方法不太一样,会折腾的也可以买这个试试。

刷机

N1的固件大体分为两大类:一类是“webpad”、“YYF”等电视盒子类固件,都是官改Android,可以直接刷入eMMC;第二类是基于Linux的“小钢炮”、“Armbian”、“OpenWrt”、“LibreELEC”,似乎只能用U盘引导。

N1刷机主要分为降级+刷机两个步骤,需要的硬件有USB双公头线(写入固件用)、鼠标(点击屏幕用)、Windows PC或平板(平板用数据线即可)`。由于我买的是已刷固件的,再次刷机就不需要降级步骤了,着重说一下怎么刷新的固件,有关降级操作可以看这篇

  1. 自带固件是YYF语音版,没有下载功能,于是我去官网下了个无语音下载版,解压得到.img文件。

  2. 下载安装“USB_Burning_Tool”,它会自动安装USB驱动,不过看网上的说法好像还需要在设备管理器添加过时驱动,选择操作-添加过失硬件-从列表选择-libusb-win32-Usb Device

  3. Adb环境,从谷歌官方下载“platform-tools”即可。

  4. 网线连接N1和路由器,USB双工头线连接N1和电脑,打开USB_Burning_Tool,加载刷机包,去掉“擦除FLASH”和“擦除Bootloader”前面的√,点击开始。

  5. ADB连接N1,adb connect “N1的IP”:5555adb shell reboot update进入线刷模式,N1重启后,USB_Burning_Tool会自动开始写入。

  6. 如果没有变化,可能是N1和电脑没有连接识别,听说要用2.0的线,我的比较奇葩,接了个USB延长线才识别出来...

USB_Burning_Tool

固件问题

  1. 在Kodi中查看系统信息,发现温度总是在60多度,CPU的一个核心总是100%,在恩山看到别人也有这样的问题,原来是一个蓝牙语音服务“BluetoothLeService`,通过ES浏览器删除文件就好了。

  2. 下载版的YYF固件自带了好多东西,SSH登录后发现好像就是个Linux(Optware),就是装啥啥没有,好吧问题不大,一通操作关闭了“Xware” 、“Aria2”等不想用的功能,然而还是有残留...

  3. 自带的Web管理就是“Lighttpd” + “PHP”,索性把PHP删了后,用Lighttpd的dir-listing来浏览文件,还能添加CSS和JS优化一下界面,到添加JS的时候发现版本太老,而Optware也没有新版本,索性重新刷个纯净固件,装上更新的Entware。

Entware

Entware大概就是一个给嵌入式设备提供的Linux软件环境,通过它的软件源,可以方便的安装一众适配好的软件。

安装

重新刷了个"YYF无语音实用版(421)"固件,看日志已解决了CPU占用的问题,固件自带了dropbear,也就是可以直接SSH登陆操作,默认root:rush ,端口2223

安装Entware照理是按照官方教程一步步操作就可以了,但是这里面有一个坑就是“wget”无法正常使用,下面就开始抄作业。

  1. SSH登陆后进行一些准备工作:
    /system/bin/mount -o rw,remount /
    mkdir /opt
    mkdir /bin
    ln -s /system/bin/sh /bin/sh
    /system/bin/mount -o ro,remount /
    mkdir /data/entware.arm
    mount -o bind /data/entware.arm /opt

  2. 接下来需要下载安装脚本进行安装,wget无法使用的问题可以替换“busybox”,原帖,因为没有账号下不了,直接去busybox官网下载二进制文件也是可以用的。mount -o remount,rw /system/system分区支持写入,将下载的二进制文件覆盖到/system/xbin/busyboxchmod 0755 /system/xbin/busybox修改权限为755。

  3. 下载并执行安装脚本wget -O - http://bin.entware.net/armv7sf-k3.2/installer/alternative.sh | sh,提示增加环境变量(程序执行路径),修改.profile,在PATH中新增路径,完成后如下

export PATH
PATH=/system/bin:/system/xbin:/opt/bin:/opt/sbin/

4.软链接到DNS解析的文件ln -s /system/etc/resolv.conf /opt/etc/resolv.conf

5.创建开机初始化的脚本,新建/data/entware.arm/init.sh,内容如下

#!/system/bin/sh
unset LD_PRELOAD
unset LD_LIBRARY_PATH
sleep 3
/system/bin/mount -o rw,remount /
sleep 1
/system/bin/chmod 0777 /data/entware.arm
/system/bin/mkdir /opt
/system/bin/mkdir /bin
ln -s /system/bin/sh /bin/sh
/system/bin/mount -o ro,remount /
sleep 3
/system/bin/mount -o bind /data/entware.arm /opt
/system/bin/mount -o bind /data/entware.arm/root /system/etc/dropbear
sleep 2
/opt/etc/init.d/rc.unslung start

编辑/system/bin/lazy-start.sh,在exit 0 前加入

sleep 1
/data/entware.arm/init.sh &
  1. 此时Entware就安装完成了,重启N1就可以SSH登录安装需要的软件包了。

Lighttpd

用来做一个HTTP的目录浏览,以及WebDAV方便各个设备使用。
opkg install lighttpd
安装完成后,编辑/opt/etc/lighttpd/lighttpd.conf,增加dir-listing的配置,不用样式和脚本的可以注释掉,默认目录在/opt/share/www

dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"
dir-listing.external-css    = "/dir.css"
dir-listing.external-js     = "/dir.js"

安装WebDAV模块opkg install lighttpd-mod-webdav,编辑/opt/etc/lighttpd/conf.d/30-webdav.conf,默认有个模板了,主要是修改目录,我这里是用的share目录,webdav.sqlite-db-name是数据库文件路径,有需要也可以修改。

$HTTP["url"] =~ "^/share($|/)" {
  ##
  ## enable webdav for this location
  ##
  webdav.activate = "enable"

  ##
  ## By default the webdav url is writable.
  ## Uncomment the following line if you want to make it readonly.
  ##
  webdav.is-readonly = "disable"

  ##
  ## Log the XML Request bodies for debugging
  ##
  #webdav.log-xml = "disable"

  ##
  ##
 webdav.sqlite-db-name = "/opt/share/www/share/.lighttpd-webdav.db"

配置用户认证,如果要开放到外网的话,最好还是加上。新增一用户文件/opt/etc/lighttpd/lighttpd.user,每行一个账号密码,用":"分隔。接着编辑/opt/etc/lighttpd/conf.d/20-auth.conf,将auth.backend设为plainauth.backend.plain.userfile指向刚才新建的用户文件,设置目录等信息。

auth.backend                 = "plain"
auth.backend.plain.userfile  = "/opt/etc/lighttpd/lighttpd.user"
#auth.backend.plain.groupfile = "/etc/lighttpd/lighttpd.group"

#auth.backend.ldap.hostname = "localhost"
#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
#auth.backend.ldap.filter   = "(uid=$)"

auth.require               = ( "/share" =>
                               (
                                 "method"  => "basic",
                                 "realm"   => "please enter password",
                                 "require" => "valid-user"
                               ),
                             )

/opt/etc/init.d/S80lighttpd restart重启服务。

Transmission

安装opkg install transmission,修改配置文件/opt/etc/transmission/settings.json,配置参数解释可以参考这里,我主要是下PT,对于PT来说一般关闭DHT就可以了。

替换WebUI,默认的Web界面(9091端口)太过简单,使用transmission-web-control进行替换,下载release里面的包,用src里面的文件覆盖到/opt/share/transmission/web/,移动端还是老的UI。其实也可以使用transgui这样的本地软件来远程管理。

transmission-web-control的作者的另一个项目PT助手提供更好的搜索和下载体验,通过配置好transmission RPC服务地址,可以在搜索资源后一键远程下载。

如果遇到PT站“可连接”显示否的,可以在路由器上手动映射51413端口

刚发现有个问题,下载的时候有一定概率使Tansmission变卡,页面打开很慢,看了下可能是ntfs-3g性能问题,如果硬盘用Ext4格式可能会有所改善吧(好像不会自动挂载)。有个更奇怪的影响是,Android下各种app都会播放不了视频,即使停止了transmission也不行,必须重启N1才能恢复正常...

transmission-0

Shadowsocks+Privoxy

开始只是想在电视上看Youtube,试了多个上网APP发现都不行,可能是系统阉割了什么东西,只能曲线救国

Android WiFi设置那里可以使用自动代理(pac),这样只要跑 个“ss-local”再生成个pac就好了,然而我用的有线连接没有这种操作。在网上找到Android有个命令可以设置全局http代理,于是想到了用Privoxy转换Socks5代理及分流

安装opkg install privoxy shadowsocks-libev-loacl。修改/opt/etc/shadowsocks.json配置shadowsocks服务器,这里不作详细说明。

使用gfwlist2privoxy将gfwlist转换为Privoxy的规则(需要一个能跑python的机器)。
pip install --user gfwlist2privoxy
wget https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
~/.local/bin/gfwlist2privoxy -i gfwlist.txt -f gfwlist.action -p 127.0.0.1:1080 -t socks5
将生成的gfwlist.action拷贝到/opt/etc/privoxy/,修改/etc/privoxy/config,加上一条

actionsfile gfwlist.action

/opt/etc/init.d/S24Privoxy restart重启生效,接着执行settings put global http_proxy 127.0.0.1:8118设置全局代理。

要开机自动设置代理可以编辑/opt/init.sh这个初始化脚本,把上面那条命令加在最后。

Frp Server

用来中转Mtproxy,直接从Github下载二进制包解压执行,要开机自起可以参照 /opt/etc/init.d/内的启动脚本,主要是两个参数PROCS:命令名称,ARGS:执行参数(需要把二进制程序放/opt/bin/下),关于启动脚本的命名,“S”后面的数字是启动顺序,一般选择靠后的没有被用掉就可以了。

Caddy

最后把Lighttpd换成了更好用的"Caddy",最直接的好处是browse文件浏览体验比原来好很多,加上TLS、WebDAV、反代一条龙服务,配置起来很方便,就是开始用会碰到了几个坑。

坑一是由于不能80端口,申请证书要用dnspod插件,需要设置密钥的环境变量,目前还没发现Entware怎么在启动脚本里加上环境变量,只能在shell里面手动启动;坑二是域名设置了cname会导致证书申请失败,折腾了好久改成A记录就好了;坑三是browse不支持软链接,只能把子路径另开一个server;坑四是WebDAV不能和browser同一Web路径,会返回xml,另外WebDAV不能另开server,在某些客户端会405。

caddy-0

其它

Entware还有许多实用软件包可以安装,也可以看做一个Linux机器使用,自己下载一些二进制包用,或是跑跑Python、Node之类的。不过它始终不是一个完整的Linux,比如用来编译估计比较困难,可能缺少某些依赖。

Android App

Kodi

看片必备,主要用来播放“transmission”下载的电影、电视。关于设置什么的网上有很多教程,这里讲一下使用中的几个问题。

  1. 削刮器:中文削刮器插件似乎都失效了,自带的削刮器也还行,不过要注意命名方式,我是每个下载新建一个目录,用豆瓣上的名字命名,削刮器设置电影在独立文件夹中。这个方法在老电影和剧集上不太适用。剧集使用纯外文命名好像比较容易挂出来,老电影还是自己扫描一下。
  2. 电视播放:需安装“PVR IPTV simple client”,节目源是很容易实效的东西,据说可以替代运营商的盒子来播放IPTV,由于我没有IPTV(准备有线电视到期了搞一个),没有实际操作过,可以参考这篇文章章节3.3。
  3. miniBD播放问题:播放miniBD暂停退出后再次播放会卡,且声道无法修改,不清楚是不是个例。

kodi-0
kodi-1

Smart YouTube TV

第三方Youtube客户端,不需要谷歌全家桶,功能完整无广告,第一次启动会让你选择版本,包括1080 Main1080 Alt 4K Main4K Alt,官网的说明是“They may have different performance depending on the device. Try launchers one by one until you find best one. ” emmm...我选了1080 Main 感觉播放有点卡,可能是没有硬解。试了Alt版本需要安装一个额外的app,直接下还不行,之后再研究看看。

关于科学上网参考Entware章节中的"Shadowsocks+Privoxy"。

youtube-0

Bilibili TV

Bilibili电视版没有弹幕,一部分视频还看不了(不知道是什么操作),说实话用这个App还不如手机投屏(ノ`Д)ノ。不过万能的网友找到了旧版本安装包,所有视频都可以播放,而且有弹幕可以看。
bilibili-0)
bilibili-1)

乐播投屏

YYF固件已经自带了,投屏还是不错的,没有明显的画质下降,只是有广告Airplay会卡顿尽量还是用DLNA(视频app里面的应该是这个)吧。另外投屏过程据说会产生大量缓存,清理还比较麻烦。

遥控器

N1的遥控器选择很多,从App到蓝牙遥控到无线飞鼠,五花八门。

斐讯遥控器App

官方出品的遥控App,有按键滑动几种模式,还能截图保存,就是每次都要用手机有点麻烦。
feixun-app-0

T1遥控器

T1盒子带的遥控,完美开关N1,还可以使用语音控制。价格较贵,外观较丑,听说手感不错,价格在35以上。

其他品牌蓝牙遥控器

如果有限制的盒子遥控器可以用一下,几乎都是通用的,一般通过加入按键文件也都能成功控制。不过此类遥控通常不能开机,电源按钮也可能变成重启而不是关机。另一个问题就是像小米这种品牌的遥控手感做工都比较好,但是单买价格贵,而山寨遥控手感和做工不尽如人意。

2.4G无线遥控

和无线鼠标差不多,需要接收器。无线飞鼠、YYF店里卖的无线遥控都属于这一类,弊端和蓝牙的差不多,没办法开机,据说延迟也比较严重。

红外遥控

需要插个接收器,YYF店里也有卖,因为用USB,应该也是没法开机的,好像也没什么非要用红外的理由...

HDMI CEC

N1默认开启这个功能,这个东西再各个品牌电视上名字可能不一样,但本质是一样的,都是通过HDMI控制设备,这样就可以用电视机遥控器去控制N1了。在家里的松下电视机上试了一下是可以的,上下左右、返回、确认及数字键都能正常使用,只是少了个菜单键。然而当我再接一个电视机顶盒就不能使用了,坑!每次开电视机需要把另一个HDMI线拔了才能开启这个功能。还是要另搞一个遥控器。

最终选择

最后看见论坛有人提到小熊的Verizon遥控(网搜青州小熊有真相),做工手感都极佳只要15/16块,算上运费就是22/23,就买了这个。
verizon-0

实际体验感觉不错,播放控制的几个按钮也是可以使用的,最下面的按钮是主页键。唯一缺点就是不能开机还有就是不知道蓝牙一直连着会不会有点费电,发现一段时间不用第一次按键会先激活,可能有省电效果。

功耗和发热

N1功耗据说是很低的,正好之前买了测功耗的插座,用来看一下。

  1. 空闲:功耗3.2-3.5W
  2. Kodi播放1080P视频:4.6-5.3W
  3. Bilibili:5.5-5.8W
  4. Youtube:5.9-6.3W

这个功耗应该可以说是很低了,看了家里的有线电视盒子基本在15W以上。。。

N1发热比T1好很多,在室温29度情况下待机48度,播放视频在68-72度,感觉还是有点热。买了一个USB小散热风扇,温度直降10度。就是声音有点大,接个电阻或二极管应该能改善,目前用WIFI插座跑个脚本根据温度自动开关。

fan-0

总结

作为一个一百多价位的盒子硬件不落后,可玩性高,可以说是垃圾佬必备了。

参考

https://post.smzdm.com/p/aoo6q09n/
https://pockies.github.io/2019/03/07/phicomm-n1/
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=669258
http://www.iwil.club/90.html
https://www.right.com.cn/forum/thread-323838-1-1.html
https://blog.whsir.com/post-1182.html