背景:
6400刷了梅林之后,无线信号就不咋好。所以尝试废物利用,改造成智能家庭中枢。
这个文章主要以自己记录为准,对小白可能不是特别友好,如果有人看有人问的话,我在更新更多的详细信息进来吧。
参考:
路由器安装home assistant_服务软件_什么值得买,但是时间很久了,很多东西不支持了,一堆报错。所以根据自己后续的踩坑经历,整理一个文章。
列一下坑:
1.cryptography 从3.4版本还是几之后,部分代码被rust重写。rust在r6400安装太费劲,自己不能交叉编译的情况,走不通。
2.opkg的这个entware的源很多软件都没有,安装到某一个依赖就要编译安装什么玩意了,安来安去就死循环到一个不能被安装的软件,因为不是每个软件都有armv7l的编译版本,比如rust。
3.支持cryptography 的最后一个home assistant 版本是 2020年最后的一个版本:https://pypi.tuna.tsinghua.edu.cn/packages/90/44/458c24a0b8527f630d45b309231fc3aeb7a553affe859add0f051ddd40b1/homeassistant-2021.9.7.tar.gz#sha256=da587c9fbdfd41169aeb4802d1458dac81a46f026644c29b29b5a8cbcdcb7719最后安装的也是这个版本
步骤:
1.梅林先开启ssh端口,然后通过外接U盘,格式化成ext4格式,entware.sh 常规操作。
2.python3安装之后是3.10版本的,看了下http://wheel.home-assistant.com/ 编译好的wheel都是cp39的,所以尝试降级opkg安装的python3.9。
a.opkg的源还是bin.entware.net,这个源可以在/opt/etc/opkg.conf修改,现在先不改。
b.下载https://bin.entware.net/armv7sf-k2.6/Packages.gz 将gz解压然后把里面的python版本 搜索3.10.x-x替换成3.9.6-2 然后保存。
c.本地gzip打包,修改路由器hosts,使bin.entware.net 解析到当前pc,启动python3 -m http.server 80,欺骗opkg update 下载的Packages.gz 是源上下载的。
d.opkg的源更新之后,修改回hosts,直接把bin.entware.net那行注释掉就行。(记得把/opt/etc/opkg.conf源路径选对,历史的软件源都在Index of /armv7sf-k2.6/archive/ 这个目录里)
e.安装python3, 需要加一个参数--force-checksum 禁止md5校验,因为只改了版本号没改md5. 还要安装参考文章里的那一大堆opkg install 里的。用get-pip的方法安装pip。
3.很多的pip依赖,如果拉到了tar.gz 的文件都是说明要编译安装的,实际上直接在http://wheel.home-assistant.com/ 使用已经编译好的whl文件会更快,用法 pip3 install (whl文件的url)
4.有几个依赖比较难搞,
a.通用问题,one:pip的.cache 可以直接设置到/mnt/sda/下。two:设置虚拟内存用mkswap linux 自己去搜吧。three:TMPDIR 环境变量设置,否则有些包会提示 no space left。
b.pillow 需要用到 jpge的header文件,可以去libjpeg-turbo的github上,找到对应的头文件,放在/opt/include 里。
c.还有一个遗留问题就是openssl.abi3.so 在被cryptograph 引用的时候 还是报了internal error ,不过没有影响使用 先用着看看。(这里解决了,因为openssl兼容问题,重新编译了openssl1.1.1版本,会涉及到perl很多的module库,是可以穷举安装完的)其次是编译的目录需要在Makefile里指定到其他目录再导到/opt/include里 还有/opt/include/python3.9/openssl里,很多python build的依赖库是在这个里找到的。)
TODO:下一步交叉编译rust,升级HASS为最新版。