信息- 2018-09-07:4.X内核wifi修复版armbian已经可以刷入N1,有空加上教程。
- 2018-08-21:无灯大神刚搞了个网页版eMMC移植镜像,简化了移植的操作,但是不知系统和内核信息,楼主将视情做更新和补充。
新手注意:不推荐新手用N1!!!这不是一个入门的平台,学习不是光看硬件指标的,软件还有生态更重要,别给入门环境设置困难模式。- 2018-08-27:新增N1更新HomeAssistant的问题及解决办法。
【暗度陈仓】如何在斐讯N1上安装homeassistant
n1
安装
hass
adb
Ubuntu
斐讯N1
这货是个NAS,但是硬件指标更像一个电视盒子,考虑到不错的性价比,用来做hass服务器妥妥的。
- CPU:Amlogic S905D,ARM Cortex-A53,四核 1.5GHz。
- GPU:ARM Mali™-450,五核支持4K@60fps硬件解码,HDMI 2.0。
- RAM:K4B4G1646E ,4Gb DDR3-1866MHz,共4颗,2GB。
- ROM:KLM8G1GEME,8GB eMMC,eMMC5.1, 三星MLC。
- LAN:RTL8211F,千兆速率
- WIFI:1x1mimo支持5G ac,2.4G 65Mbps,5G 390Mbps。
- 接口:1个HDMI,2个USB2.0,1个千兆口,一个12VDC。
- 电源:12V/2A。
个人简评
新手须知:如果不知道斐讯K码0元购的事情,请自行百度,这是购买N1应该知道的背景。
简评:挂着网络NAS的名头,配着超清电视盒子的硬件,过去干的往往是挖矿的活,现在却用来当作网络服务器。
优点:与树莓派3B+相比,架构一致,硬件性能基本相当,略有优势。自带eMMC使用方便,读取速度和可靠性高于microSD卡。自带电源、盒子,供电和散热条件好。最关键是价格便宜。
缺点:作为N1的ROM,其eMMC的容量只有8G,按帖子方法移植系统后,系统空间只有5G。
购置:建议多在闲鱼等二手平台上看看,不要太贪便宜,注意卖家的可靠程度和N1的成色。推荐全新未通电的N1,市场价格波动剧烈,参考价格80元。
补充1:N1和3B(+)真的都是ARMv8架构,树莓派的raspbian系统也有arm64版了,真心不是架构不同。
补充2:GPU的比较没啥意义,N1的GPU在手机中属于低端货色,但是肯定比树莓派的GPU强,至少能上4K。而树莓派好像从来就没更新过GPU,一直是2核250MHz,虽然能超频,似乎也仅仅适合1080P(设计规格是1080C30)。
安装前的准备工作(不一定都用到)
- 感谢前人的各项工作,特别是恩山论坛的各位大神,恕不一一致谢;
- 不建议纯新手操作,设备变砖请找售后(好吧,可能以后也没有售后了),本人概不负责;
- 时刻保持怀疑精神,我是回忆方式整理,比较简单的地方可能有步骤的跳过和疏漏;
- 斐讯N1主机及电源;
- 路由器、Win系统电脑、网线、HDMI线、USB鼠标;
- USB双公头刷机线(老式移动硬盘线可代替,可自制可淘宝);
- U盘(大于4G,要求稳定)
下载(不一定全部用到)
- 降级工具:
adb.exe
、 AdbWinApi.dll
、AdbWinUsbApi.dll
、 fastboot.exe
;
- 降级img:
bootloader.img
、boot.img
、recovery.img
;
- 刷机软件:
USB_Burning_tool
;
- 刷机镜像:
N1_mod_by_webpad_v2.0_20180601-sf-gms-xposed-2.img
;
- 线刷工具:
adb.exe
、 AdbWinApi.dll
、AdbWinUsbApi.dll
、 进入线刷模式.bat
;(这里文件有重复没关系)
- U盘镜像加载工具:
USB_Image_tool
- Ubuntu镜像:
Armbian_5.44_S9xxx_Ubuntu_bionic_3.14.29_server_20180601.img
;
- U盘移植脚本:
install.sh
;
- 另
putty
、winscp
等SSH必备工具请自己准备好
- 下载地址如下,请注意解压:
- 链接: https://pan.baidu.com/s/1bela8Fvjiu0prJqkNhaVzA 密码: ipir
第一步:官方固件降级
请注意,此步骤非必须!
拿到N1以后,千万不要直接接入外部网络,系统会自动升级固件!!!
如果是未通电入网的新N1,固件版本应为2.19,可直接进入第二步。
这就是为什么推荐买未通电未联网N1的理由之一,和卖家撕逼几率的可能性大大降低是理由之二。
如果你像我一样,傻傻地把N1通上电还接入网络,然后去洗了个热水澡,那么恭喜你,一起来降级吧。
我的N1被自动从2.19升到了2.28(最新)。
哪些版本需要降级:2.22-2.28。
N1的官方固件是一个安卓系统,所以我们可以通过adb工具来降级。
首先安装adb的4个文件(见准备篇),方法是将4个文件扔到win目录下system、system32、syswow64文件夹中,你电脑里有哪个文件夹就放哪个里面,全部都有就全部都放一份好了,以防万一。懂的同学明白就是放path定义的路径下,然后降级开始:
-
N1和电脑放在同一网段,接入路由器(这里无线有线皆可),获取N1的IP,可以路由器设置好禁止N1访问外网避免继续升级固件;
-
N1接上显示器、接上鼠标,通电开机,启动完成后,在“固件版本”几个字附近连点几下打开adb调试(如图,再多点几下又会关闭adb);
-
电脑运行cmd,输入命令
adb connect N1的IP地址
看到connected to N1的IP地址...
表示成功。(注意端口被占用也会失败)
-
USB双公头线连接电脑(原生usb2.0口)和N1(靠近hdmi的usb口);
-
电脑运行cmd,输入命令
adb shell reboot fastboot
等待N1进入fastboot模式,叮咚一声,Windows发现新硬件“Android Phone - Android ADB Interface”;(失败可尝试换usb口)
-
cmd中按下Ctrl+C中断命令,输入
fastboot devices -l
出现设备序列号,说明已经识别为fastboot设备;
-
将降级img中(见准备篇)3个镜像文件放到电脑某个容易操作的位置,然后cmd输入命令切换到这个目录下,再运行以下命令:
fastboot flash bootloader bootloader.img
fastboot flash boot boot.img
fastboot flash recovery recovery.img
-
根据提示信息判断是否完成降级(降级成功后,官方系统中显示的信息并不会改变哦),降级完成后在cmd输入fastboot reboot
重启机器。
第二步:刷入官改固件2.0(安卓系统)
注意:此步有变砖风险,如果你只想通过U盘启动的方法来尝鲜其它系统,而不想改变eMMC内原有的斐讯官方系统,请直接跳过这个步骤,进入第三步,并执行到第5小步,就可以直接运行和使用U盘系统,断电拔掉U盘重新通电即可重新使用官方系统。如果你是准备把U盘系统移植到eMMC的话,目前楼主根据各种信息,认为刷官改固件还是有意义的,应该完成第二步操作后再进行第三步操作比较好。如果你觉得对N1比较熟悉,确实没必要用官改,可以考虑跳过此步骤,直接在官方固件上进行移植。
- 安装刷机软件
USB_Burning_tool
;
- 确保刷机镜像
N1_mod_by_webpad_v2.0_20180601-sf-gms-xposed-2.img
验证无损;
- 打开刷机软件,在文件菜单中选择导入烧录包,导入完毕后,取消右边"擦除flash"和"擦除bootloader"两个选项,取消右边"擦除flash"和"擦除bootloader"两个选项,取消右边"擦除flash"和"擦除bootloader"两个选项,重要的事情说3遍,否则变砖别怪别人,然后点击开始按钮。(这时并不会真正开始刷机,而是进入刷机就绪阶段,等待条件就绪)
- 确保USB双公头线连接电脑(原生usb2.0口)和N1(靠近hdmi的usb口);
- 电脑上运行
进入线刷模式.bat
,输入N1的IP地址,N1重启,电脑设备管理器会发现新硬件:WorldCup Device
,若顺利,此时刷机软件会自行开始刷机;
- 刷机到100%完成,点击停止,断开电源和所有连线;
- N1连接显示器、鼠标、网线等,重新开机,经历10分钟的等待,官改固件第一次启动成功,注意此时通过路由器看到N1的名称为"Android..."
第三步:U盘启动Ubuntu并移植到N1的ROM中
- 使用U盘镜像加载工具制作U盘;
- 制作完成后若弹出格式化请求请确保忽略无视该信息;
- 电脑打开U盘BOOT区,在3.14.29内核目录中找到
gxl_p230_2g.dtb
文件,复制到BOOT区根目录,并重命名为dtb.img
- 不插U盘,通电入网进入官改系统(此处若插U盘,就要修复权限了),在电脑上运行cmd并输入
adb connect n1的ip
,成功连接后,输入adb shell reboot update
。
- 黑屏后关机拔掉电源,然后再插入U盘,稍等片刻,然后再插入电源。
- 稍等片刻,U盘启动,注意此时通过路由器看到N1的名称为"Android..."一闪变为"Amglogic",说明U盘启动成功,注意此时N1的IP地址发生变化。
- 进入系统,用户名root,密码1234,然后配置新的root密码和新用户。
- 通过任意方式将/root/install.sh 替换为网盘中的U盘移植脚本
install.sh
;
- 运行下列命令:
nand-sata-install
e2label /dev/sda2 ""
e2label /dev/data "ROOTFS"
- 关机,拔掉U盘,重新开机,此时N1的IP地址又变回来了,等待启动完成即可。
以上步骤完成后,N1既可以通过eMMC系统自启动,需要使用U盘启动时,只要插上U盘即可。
第四步:安装Homeassistant
楼主没有使用docker安装hass,而是选择手动安装,没啥原因,楼主就是想自己装。
论坛很多docker安装hass的教程,有兴趣的同学可以自己找来试试看。
Ubuntu装hass并不麻烦,论坛已经有囧帅大大的无坑版安装方法,我这里再重新梳理一遍。
移植的Ubuntu,版本是18,代号bionic,内核版本3.14.29,Server版。
如果前面顺利,此时你已经可以以自己的用户名ssh登陆到N1上了。
下面我们先配置下基本环境。
-
修复sudo。若将U盘插入安卓系统后再移植系统,
则移植文件的所有权将出了问题,需要修复。
否则可以跳过此步骤,方法:
如果你使用自己的用户登陆后,发现使用sudo命令出错,告诉你所属用户id不对,那么你可以使用如下办法修复sudo:
先换root登陆N1,然后逐行输入下述命令:
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
chown root:root /usr/lib/sudo/sudoers.so
chmod 4755 /usr/lib/sudo/sudoers.so
chown root:root /etc/sudoers
chown root:root /etc/sudoers.d
chown root:root /etc/sudoers.d/README
然后,试一下sudo命令是否修复,不报错就OK了。
其实楼主这么修是否完全OK我也不清楚,linux经验不足,只是顺着问题填坑罢了。
-
配置Armbian,设置时区等
使用系统自带的armbian-config,轻松配置系统,输入:
sudo armbian-config
即可通过图形界面对系统进行基本设置。
你可以按需要自由配置网络,比如添加DNS服务器等,具体的配置不详述。
但是请务必在Personal-Timezone中设置好时区,一般是Asia/Shanghai.
-
换中科大arm源, 先备份再编辑源配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo nano /etc/apt/sources.list
接下来,把所有的http://ports.ubuntu.com/
全部替换为 http://mirrors.ustc.edu.cn/ubuntu-ports/
Ctrl + X , Y , 回车,完成保存退出。
-
更新源,并安装,然后清理。
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get autoclean
sudo apt-get clean
-
安装python3相关包。
sudo apt-get install python3-dev
sudo apt-get install python3-pip
sudo apt-get install python3-venv
补充,安装ffi库。
sudo apt-get install libffi-dev
-
添加一个名为homeassistant的用户,转到/srv目录,
建立homeassistant文件夹,更改此文件夹的所有者和所属组。
sudo useradd -rm homeassistant
cd /srv
sudo mkdir homeassistant
sudo chown homeassistant:homeassistant homeassistant
-
更换用户,切换目录,创建并进入虚拟环境。
sudo su -s /bin/bash homeassistant
cd /srv/homeassistant
python3 -m venv homeassistant_venv
source /srv/homeassistant/homeassistant_venv/bin/activate
-
虚拟环境下更新pip, 安装依赖netdisco和warrant包。
pip install --upgrade pip
pip install netdisco
pip install warrant
-
安装HomeAssistant
pip install homeassistant
-
安装完毕,退出虚拟环境。
exit
-
设置开机启动,建立service文件,
sudo nano /etc/systemd/system/[email protected]
将下面内容拷入文件
[Unit]
Description=Home Assistant
After=network.target
[Service]
Type=simple
User=homeassistant
Environment=PATH="$VIRTUAL_ENV/bin:$PATH"
ExecStart=/srv/homeassistant/homeassistant_venv/bin/hass -c "/home/homeassistant/.homeassistant"
[Install]
WantedBy=multi-user.target
Ctrl+X,Y,回车,完成保存退出。
-
更新系统设置,设置HomeAssistant开机启动
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
-
启动HomeAssistant
sudo systemctl start [email protected]
第一次启动,需要安装一些包,此时8123的前端一般登不上。
可以用一下命令查看状态:
sudo systemctl status [email protected]
当状态只重复出现sun组件info信息时,可以重新启动hass。
-
重启HomeAssistant
sudo systemctl restart [email protected]
重启之后,还是会安装一些包,稍等一会儿,尝试登陆8123前端。
-
完成
能够登陆8123,看看系统有没有报错,没其他大问题就表示hass安装OK了。
其它:
如何更新HA:
- 输入:
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/homeassistant_venv/bin/activate
pip install --upgrade pip
pip install --upgrade homeassistant
若一片白字,成功升级则OK。
- 若出现以下问题(楼主升级到0.76.2时发生)
说明系统缺少ffi库,ubuntu问题。
那么,若已经按步骤1,,进入虚拟系统,则用exit退出虚拟系统;
然后输入:
sudo apt-get update
sudo apt-get install libffi-dev
成功安装后,再执行步骤1即可。
如何连接wifi网络:
-
手动加载dhd模块,以驱动无线网卡,以下命令输入一次即可,以后开机不用再输。
sudo modprobe dhd
-
确认无线网卡驱动正常,这里我用了ifconfig命令,因为系统还没有这个命令,所以让我们先来安装net-tools,当然,你也可以用系统自带的ip link命令,这样就不需要安装额外的命令了。
sudo apt-get install net-tools
使用ifconfig命令,查看wlan0口参数是否正常。
sudo ifconfig
如果出现有wlan0等信息,说明无线接口已经成功开启。
-
进行网络接口的配置管理。
sudo nano /etc/network/interfaces
-
将下列内容拷贝进去并进行修改:
# armbian-config created
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid 你的无线网络SSID
wpa-psk 你的无线网络密码
# wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Ctrl+X,Y,回车,完成保存退出。
-
重启wifi
sudo ifup wlan0
这里有一行注释的 wpa选项,因为我自己用的是wpa_supplicant和其自带的命令行wpa_cli进行配置的,有兴趣可以了解下。
注意:无线网络接口和有线网络接口在同一个网段中时,不配置的情况下是无法同时使用的,只有一个可以正常工作。
补充:2.4G和5G均可以正常连接,wifi连接后可以通过iwconfig命令确认属于哪个频段并查看连接情况。
如何安装蓝牙驱动:
https://bbs.hassbian.com/thread-4280-1-1.html
如何清理安卓系统:
注意:清理后安卓系统将无法启动。
-
清理根目录下文件(主要)使用命令sudo rm -r /对应文件夹
来删除以下文档。
- /app 以及/app-XXXX
- /dalvik-cache
- /media
- /data
- /misc 以及/misc_XX
- /TDDOWNLOAD 等无关紧要的安卓遗留的空文件夹
注意:根目录下还有Armbian的系统文件夹,别删错了。
-
格式化system分区(可选)
格式化前注意确认,别格错了分区
sudo mkfs.ext4 /dev/system
然后,把system挂载到你需要的地方使用。
如何重装eMMC系统:
前提:在之前的移植过程中使用本帖方法替换并运行过install.sh
;移植系统时的U盘还在,没有的话需要重新做一下。
原理:使用U盘引导系统,格式化eMMC上的data分区,重新使用install.sh移植U盘文件至data分区即可。以下步骤已经过C老湿检验:
-
使用U盘的系统启动(通电前先把U盘插上N1即可)。
-
格式化eMMC的data分区(可以先检查下分区内的文件是否是emmc上的Armbian文件)。
sudo mkfs.ext4 /dev/data
-
重新执行install.sh即可。
把网盘中的install.sh
放到/root下
nand-sata-install
如何实现N1的内网穿透
这里使用了自建Frp服务器和配置N1Frp客户端的方法实现。
首先,你需要一台Frp服务器,并且有一个域名,域名的A记录值为服务器IP。
一般我们通过购买VPS的方式,获得服务器,详细内容不做太多描述,
关于Frp服务器,请根据自己的VPS等的系统,配置并安装Frp服务端,记录下主要的参数,本帖不做详细讨论了。
可以参考考虑下面的办法(我这里是直接把客户端装在N1上,所以下文看到服务端配置完成即可):
https://post.smzdm.com/p/566063/
关于DNS域名购买和配置,百度也一大堆内容,故不做详细讨论了。
重点如下-给N1配置Frp客户端服务:
- 下载frp软件
cd /home/homeassistant/.homeassistant
sudo wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_arm64.tar.gz
sudo tar -xzvf frp_0.21.0_linux_arm64.tar.gz
sudo rm -f frp_0.21.0_linux_arm64.tar.gz
sudo mv frp_0.21.0_linux_arm64 frpc
完毕后,在/home/homeassistant/.homeassistant/frpc文件夹内可以看到相关文件,这里只有frpc和frpc.ini有用,其它没用可以删掉。
-
配置frpc.ini
sudo nano /home/homeassistant/.homeassistant/frpc/frpc.ini
覆盖为以下内容
[common]
server_addr = frp服务器地址
server_port = frp服务器端口
token = frp服务器token
[web_hass]
type = http
local_ip = 127.0.0.1
local_port = 8123
custom_domains = 自定义的域名(含有指向frp服务器地址的A记录的DNS域名)
-
新建frpc服务,此服务在hass服务启动后再加载
sudo nano /etc/systemd/system/frpc.service
覆盖为以下内容:
[Unit]
Description=Frpc service
[email protected]
[Service]
Type=simple
#Set the path to your hass config location
ExecStart=/home/homeassistant/.homeassistant/frpc/frpc -c /home/homeassistant/.homeassistant/frpc/frpc.ini
[Install]
WantedBy=multi-user.target
-
设置开机自启并现在启动frpc服务
sudo systemctl daemon-reload
sudo systemctl enable frpc.service
sudo systemctl start frpc.service