霍格沃茨特快列车
Mkapakka's Hut
斐讯N1装Ubuntu(Armbian)+尴尬复活记录
点这里开始抄袭本文

phicomm-google

Google对feixun的联想

众所周知斐讯是一个慈善机构通信大厂

0. 前言

某讯N1作为一个假电视、真挖矿设备。作为一台电视盒子,它有千兆网口,HDMI,支持双频(5G)Wi-Fi。作为矿机,ARM64架构,自带4核心CPU,2G内存,8G eMMC (embedded Multi-Media Controller) ,可以直接上linux+docker,可玩性请自己发挥想象。N1玩法过于多样,各路文章就连系统安装都说法不一,文章根据个人经验(遇到的坑)写成,尽量考虑多种情况,可能还会有未知的bug或不清楚的issues出现,有错的地方敬请指正,欢迎留言或直接和我交流。

看雷军出对

  • CPU: Amlogic S905D Cortex-A53(ARM) 四核 1.5GHz
  • GPU: ARM Mali™-450,五核[email protected]硬件解码,HDMI 2.0
  • RAM: 2G DDR3 K4B4G1646E 512MB,共4颗,总内存2GB
  • ROM: 8G eMMC5.1 KLM8G1GEME,三星MLC
  • LAN: RTL8211F 千兆
  • Wi-Fi/蓝牙: 1x1mimo, 2.4G 65Mbps 5G 390Mbps IEEE 802.11n/ac, Bluetooth 4.1
  • 接口: USB2.0 x2、HDMI x1、千兆LAN口 x1、12V/2A DC

本文主要介绍如何在N1上用U盘安装Linux和如何救砖,安装Docker等玩法将在日后的文章中体现😋

同比最新的树莓派4B/2G,某🍔上大约300大洋,​比N1强的应该是这个USB3.0了 (口出狂言) ,但数据传输咱可以不用USB呀,千兆以太网口摆在那呢。

某🍔某🐟都是没法直接关键搜到N1的,某讯的产品现在还都得在并夕夕上买。N1二手的有七八十到一百多不等,我入手的是120大洋全新未刮🐎,可惜K🐎已经没用了。想要直接玩上的也可以买刷好机的版本,价格会略贵(不值)。

阿曾搞了个N1来替代废旧笔记本的作用,N1的性能强劲,价格还挺划算,于是我也顺便入了一台。恰逢阿曾的那一台因为iptables不良设置导致无法ssh,本文一并介绍如何将「崭新出厂」的N1盒子刷成Linux系统(Ubuntu)以及在没有键盘的情况下复活N1。

1. 预备工作

1.1. 硬件

斐讯 N1 电视盒子

  • 可选 一条网线
  • 必须 一条HDMI线 + 一个显示屏 🖥📺
  • 必须 一个USB鼠标
  • 必须 一个大于等于4G的U盘
  • 可选 USB双公头线

1.2. 软件

2. 启动盘制作

考虑到烧录U盘需要花上一定的时间,为了节省时间,我们先进行启动盘的制作。

图形界面:Mac上可以直接使用Etcher进行启动盘制作,Win上可以用Rufus

首先是选择你要装的系统,一共分为Debian(bullseye)和Ubuntu(eoan)两种,两个系统有分有带桌面和不带桌面版,不带桌面版也可以之后再安装桌面。

我选择的是 Armbian(Ubuntu_eoan)带桌面,压缩文件名叫 Armbian_20.02.0-rc1.038_Aml-s9xxx_eoan_current_5.5.0-rc6_desktop_20200205.img.xz,解压出的镜像文件有3.95GB。镜像在哪下载?

接下来介绍的方法是在Mac上用命令行写盘的办法。

先确定下插入的U盘路径,使用diskutil list

一定要记清楚哪一个是你的U盘,如图我的是/dev/disk2,如果有重新插拔U盘请一定再用一次diskutil list来确定路径,之后的烧录命令是不可逆的。

你的TYPE和我大概不一样,我的U盘本身是一个Ubuntu的LiveCD

$ diskutil list
...
/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *16.0 GB    disk2
   1:        Apple_partition_map                         4.1 KB     disk2s1
   2:                  Apple_HFS                         2.5 MB     disk2s2
...
$ diskutil unmountDisk /dev/disk2

接下来用dd烧录,if是镜像路径,of是U盘路径

sudo dd if=~/img/Armbian_20.02.0-rc1.038_Aml-s9xxx_eoan_current_5.5.0-rc6_desktop_20200205.img of=/dev/disk2 bs=1m

一定要确认清楚of(output file)是你要烧的U盘,if后面的文件路径可以直接将文件拖入到终端中完成填写

dd命令需要用sudo,会让用户输入root的Password,输入后回车自动开始烧录U盘,该过程是不会有任何进度提示的,你可以像我一样泡一杯咖啡耐心等待。

bs(block size)我也不确定具体要指定多少,一般不要过大,单位mega的m要小写

...
3768+0 records in
3768+0 records out
3951034368 bytes transferred in 4943.135178 secs (799297 bytes/sec)

coffee

特里劳妮教授怎么没有咖啡占卜课呢

这咖啡喝了我一个半小时…

Macbook在不合盖的情况下锁屏时dd命令也是照常进行的

系统有一个防睡命令caffeinate,可以让command在active时候,系统不会睡眠

caffeinate -i make

当make在active状态时,系统不会睡眠。实际上caffeinate的用法有很多,还可以防止硬盘休眠,这里有一篇14年的指南,当然你可以直接man caffeinate来查看命令手册。其他情况我就8懂了,也可以直接设置一下never sleep.

2.1. 修改BOOT

启动盘制作完后再来看这一部分内容

刚烧完的U盘是不能直接拿来给N1用的,可能会出现各种奇怪的兼容性问题。

首先是打开你的U盘,找到根目录下的uEnv.txtuEnv.ini,用任何一种代码编辑器打开。永远不要用Windows记事本打开编辑,不然指不定何时出现莫名其妙的错误。

我的是在第18行,修改为如下所示的devices tree

# aml s9xxx
FDT=/dtb/amlogic/meson-gxl-s905d-phicomm-n1.dtb

Armbian可以运行在很多种设备上,不同设备采用的硬件都不同,为了更好的协调所以就有了这里出现了后缀.dtb的文件,这是Armbian用来管理具体设备硬件的配置文件。修改为meson-gxl-s905d-phicomm-n1.dtb可以避免诸如过热的问题。

如果没有这个dtb文件 下载传送门

某山论坛的这篇文章里的做法和我有点不同,楼主是改成meson-gxl-s905d-p230.dtb(截至我写到这的时候最后更新时间是2019-2-25),这个dtb在18年就有了,经过查证是因为n1和p230设计基本一致。

3. 连接设备

节约时间,烧盘的过程中就可以把N1上电连接屏幕和鼠标了

从上往下看N1的I/O应该是这样的

# 1 2 3 4 5
接口 USB USB(BOOT) HDMI 千兆网口 电源
I/O 鼠标 烧录后的U盘 HDMI线 网线 可选 电源线
左右滑动查看完整表格

可以不连网线,有条件的还是建议连接,把除了2以外的口全部按照升序依次插满,等待开机。

3.1. 打开ADB

1stconnect

曲面电视屏,看起来有点奇怪

先记下网络信息中的IP地址,用鼠标点击4次固件版本,屏幕下方会出现打开adb字样(再点4下会关闭,不要多点)

如果没有连接网线,网络信息下会出现连接Wi-Fi提示,点开连接到你的Wi-Fi并使其处于和你电脑在同一局域网下,并记录该设备IP地址。

4. 设备降级

这里用到的工具是 斐讯T1、N1官方系统降级工具,webpad制作的工具好处在于降低了操作成本,人人都可以按照提示快速进行降级和线刷。

现在到手的N1设备基本都需要给bootloader进行降级,只需要降级一次,降级后就没这一步什么关系了

我的系统是macOS,为了更舒服的操作我将使用VMware Fusion来虚拟Windows

同时将虚拟机的网络调整为桥接,因为待会儿要把Windows和N1放在同一个局域网

bridge

解压文件后运行run.bat,选择N1降级,通过网络进行ADB连接并按提示继续操作。

dg

5. 进入线刷模式

我们选择的方式是U盘启动Armbian,不需要用到双公线来刷机。直接通过本地局域网用adb进入线刷模式

有的固件刷入的时候需要用到双公线直接从电脑刷入,比如webpad的N1魔改版固件

fastboot

我这里的操作是很成功,但是后来重新启用线刷模式一直失败(找不到server),不知道具体原因,反正我们通过局域网来调试。

5.1. 安卓调试桥

首先是确定你有没有adb(Android Debug Bridge),直接在终端/命令行中键入adb看看是否正常反馈就好。没有的话需要安装 (或者不用,先接着往下看) ,在这里通过Homebrew(万岁!

brew cask install android-platform-tools

安装完后连接到N1:

$ adb connect 192.168.66.120 #这里的IP地址是前面记录下的IP地址
connected to 192.168.66.120:5555 #表明连接成功

关于Windows下的使用说明:

webpad的降级工具包里已经附带了必要的adb,所以直接cd到降级工具里的onekey/data文件夹下,然后再把命令行中的adb全部换成./adb.exe就行了,譬如./adb.exe connect 192.168.66.120

然后可以使用adb devices来查看连接上的设备:

$ adb devices
List of devices attached
192.168.66.120:5555	device

如果要手动降级就需要输入adb shell reboot fastboot进入fastboot模式进行固件刷入,N1降级的话一共需要刷入这三项:

fastboot flash boot boot.img
fastboot flash bootloader bootloader.img
fastboot flash recovery recovery.img

但我们前面已经完成了降级的操作,就直接进入线刷模式

adb shell reboot update

注意 先别急着执行命令,准备好你的U盘,在掐下命令后等屏幕黑掉的那一瞬间,插入你的U盘。

U盘只能插在前文提到的能boot的的USB口上,即为HDMI相邻的那个USB口。

在Android下插入U盘会导致文件权限被改写,造成不必要的麻烦

我可能就是犯了这个错误,导致一直在开机界面无法启动,也可能是我的U盘太老旧了,于是我换了个USB3.0的U盘,直接用Etcher…

懒狗用了都说好!

还等什么赶快去下载:brew cask install balenaEtcher或者点击手动下载

6. 进入系统

我的键盘落在学校了,没有外接键盘下要完成调配系统的操作。一般来说这个设备的IP地址不会轻易被路由的DHCP变更,并且ssh服务开机启动。所以直接通过终端用ssh进行连接。

默认的密码是1234,连接成功后开始初启动配置。

连接成功后系统会要求你重设root的密码,按照提示输入

要看英文,要看英文,要看英文!不要一路[y/n]按下去!!!——养成良好习惯

由于我下载的是desktop版,还会询问你新加一个用户,可以选择按Ctrl+C不加,我选择新增。我的N1还连着屏幕,完成后可以看到屏幕上的桌面成功加载,默认是xfce desktop

有可能是新增的用户问题,没过一会我在输入各种命令(除了logout)的时候出现了IO error,鼠标点击menu bar出现了乱码的error popever,只能重新上电。

刷入eMMC就不再出现这个问题

7. 刷入eMMC

现在的U盘是载入到了N1内存,我们要给eMMC (embedded Multi-Media Controller) 刷上armbian。

当然你可以选择不这么干,仍旧从U盘启动,缺点是启动速度慢,并且可能会出现之前提到的问题。优点是你可以给N1刷上不同的系统,根据需求切换。

网上普遍提到用nand-sata-install这个命令来刷入eMMC,但在我的系统上不管用。我们先来看一下用户(root)目录下有什么

这个install-aml.sh其实就是我们的安装脚本,直接执行./install-aml.sh。如果已经刷入eMMC是不会有这个文件的。

然后我在输出Copy USR这边卡了好久,颇为担心是出现了和前面几次一样的毛病(可能是desktop user的问题,但desktop user后来救了我一命),新建了一个tab连接机器发现一切安好,只是还在执行中。

使用cat ./install-aml.sh查看一下这里的输出结构,完成后应该像是下图右边这样的输出。

check

完整的输出是这样的:

[email protected]:~# ./install-aml.sh
Start script create MBR and filesystem
/dev/mmcblk1
Start backup u-boot default
4+0 records in
4+0 records out
4194304 bytes (4.2 MB, 4.0 MiB) copied, 0.0397989 s, 105 MB/s
Start create MBR and partittion
Start restore u-boot
442+0 records in
442+0 records out
442 bytes copied, 0.0149788 s, 29.5 kB/s
8191+0 records in
8191+0 records out
4193792 bytes (4.2 MB, 4.0 MiB) copied, 0.513858 s, 8.2 MB/s
Done
Start copy system for eMMC.
Formatting BOOT partition...mkfs.fat 4.1 (2017-01-24)
done.
Cppying BOOT...done.
Edit init config...done.
Formatting ROOT partition...
e2fsck 1.45.3 (14-Jul-2019)
ROOT_EMMC: clean, 11/419328 files, 50073/1675008 blocks
done.
Copying ROOTFS.
Copy BIN
Create DEV
Copy ETC
Copy HOME
Copy LIB
Create MEDIA
Create MNT
Copy OPT
Create PROC
Copy ROOT
Create RUN
Copy SBIN
Copy SELINUX
Copy SRV
Create SYS
Create TMP
Copy USR
Copy VAR
Copy fstab
*******************************************
Complete copy OS to eMMC
*******************************************

结束之后就可以执行poweroff下电,然后拔出U盘,重插电源线来重新上电,之后就会自启动Armbian

启动后我点开了桌面上的Test.mp4来循环播放以便系统故障的时候我会立刻知道,是一段战斗民族风情的视频,本文封面图就是出自这。(晚一点再上传,咕咕咕)

8. Armbian-config

Armbian的具体玩法详见Armbian官方文档,这里提几个装机完后一般都会做的常用操作。

8.1. 更换软件源

我寻思着没有键盘,但想玩玩远程桌面,自然想到用terminal装VNC然后连接。那安装VNC的第一步是先修改软件源方便后续的操作。这里介绍两种方法,第一种是自然的如下的命令行修改,还有一种更方便的 伪GUI修改(建议)

vim /etc/apt/sources.list然后把原先的内容都注释掉,加入

deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch main contrib non-free

deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-updates main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-updates main contrib non-free

deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-backports main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-backports main contrib non-free

deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian-security/ stretch/updates main contrib non-free
#deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ stretch/updates main contrib non-free
#deb [ arch=arm64,armhf ] https://mirrors.tuna.tsinghua.edu.cn/debian/ sid main contrib non-free

之后再执行

apt-get update #更新软件源
apt-get upgrade #更新软件

8.2. 伪图形界面配置

在终端输入arabian-config打开伪图形界面,通过键盘上的方向键、Tab、空格、回车进行操作。

选择Personal可以进行软件源的设置

在做这些设置的时候要格外小心,我在这里选择安装了ZSH导致后面root登录屡次出现Permission Denied和不认密码,幸好还有一个Desktop User(也可能就是这个Desktop User让我前面出现了系统错误)

赶紧用Desktop User登录,查看了/etc/passwd一下,问题果然在这,第一行的末尾应该是...root:/bin/bash 但是bin/bash莫名变成了Desktop user的username,改回来就行了

8.3. 网络设置

N1支持接的Wi-Fi

居然连信号值都有

这个GUI直接提供了网络选项,可以直接从此处连接Wi-Fi

9. 变砖后复活

我自己是没有经历过变砖的情况,但对于阿曾那台N1在没有外接键盘的情况下的修复流程和变砖救砖是一致的。

还没复活呢! 这两天考试quq 晚点再写 (复活,可以骂我标题党了)

估计是咕咕了

10. 参考链接

没有,都是自己想的!

希望本文对你有所帮助 ;)


Last modified on 2020-04-09