DIY基于Android的路由器和机顶盒

为什么要DIY

  1. 为了安全。 目前世面上主流的家用路由器(比如tplink、dlink、netgear)都有内置后门,问题很严重。
  2. 为了把机顶盒和路由器合在一起。
  3. 为了翻墙方便。

硬件准备

硬件方面我考察了3种方案:

  1. cubietruck(即cubieboard3)。基于ARM架构。优点是支持sata、千兆网卡。但是计算能力较弱,CPU是cortex A7双核,内存频率只有480Mhz。售价540左右。
  2. Radxa。基于ARM架构。优点是计算能力强,CPU是cortex A9四核1.6GHz,内存DDR3 800MHz。缺点是IO较弱,网卡只有百兆,没有sata接口。售价600左右。
  3. Atom D2550。 基于intel x86架构。优点是基于x86,程序安装移植方便,计算能力超强,双以太网卡。整机配好价格大概800-1000左右。

最后还是选择了Radxa。

目前世面上在售的路由器,除了小米和netgear的某几款是基于ARM,其它的都是基于MIPS芯片组。运算能力远远要弱的多。所以那些把NAS和路由做在一起的,要么选好CPU售价上千,那么就是瞎扯淡。

操作系统的考虑

Radxa支持两种操作系统ubuntu和android。两种我都试了一段时间,如果只是做软路由,那么当然是ubuntu更好。用起来就跟x86的linux没啥区别。但是如果还想用它接电视看个视频啥的,那还是android好。随着Android步入客厅,基于android的TV game也许会是一个新兴市场。

安装步骤

首先在Google Play里面找Terminal Emulator和busybox装上。因为我要用wget来下载ssh server,然后运行。

ssh server本来在Google Play里有DroidSSH,好像挺流行的。但是它说什么地区限制,不让我装。我就只好自己编译一个。

安装ndk。

下载dropbear,然后改若干处。(等我有空把我改过的dropbear 6.2上传到github去)

然后编译openssl、squid、unbound等等。

我发现很多程序原本就不支持交叉编译,比如squid,它要先编译一个可执行文件,用它生成一个C++的源代码文件,然后把这个新生成的源文件加进去再编译。但是在交叉编译环境中,编译出来的程序是ARM的,我执行gcc的机器是x86的,没办法执行啊!还好这些小问题都可以用各种patch绕过。

(剩下的有空再补)

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥