Skip to content
juanjoSanz edited this page Mar 27, 2017 · 20 revisions

Possible changes: (evaluation / PoC needed)

Integration of changes from other developers

Upgrading

https://github.com/fritz-smh/yi-hack/issues/122

https://www.yitechnology.com/firmware/index/class/home

  • Status: test phase
  • rtsp binary not working !!!
  • Next Step: upload changes to github

Xiaomi - Cloud enable/disable

https://github.com/death2all110/yi-hack/commit/89549759e5fb4167c95efd96d45ee66ddb1033cf

  • Status: test phase
  • Next Step: upload changes to github

HTTP Control interface

https://github.com/SnakeSel/YiHome_camera_http/tree/master/test

http interface port 90

View camera entries Enable / disable some services (FTP, Telnet, RTSP) Set watch time zone Backup the camera

  • Status: test phase
  • all messages are in russian
  • Next Step: upload changes to github

-> check instead : https://github.com/4clouds/yi-stream notice this last scriot removes xiaomi binaries to release space ,,,, comment or remove that code to allow a fall back.

crontab configuration in equip_test.sh

???

home image / modify

Unpacking Xiaoyi Firmware Images http://irq5.io/2015/10/30/unpacking-xiaoyi-firmware-images/

Compile binaries for Yi Camera

# uname -a
Linux (none) 3.0.8 #1 Wed Apr 30 16:56:49 CST 2014 armv5tejl GNU/Linux

# cat /proc/cpuinfo 
Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 218.72
Features        : swp half thumb fastmult edsp java 
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5
Hardware        : hi3518
Revision        : 0000
Serial          : 0000000000000000

How to compile binaries?

-march=armv5   ?
static build   ?

http://stackoverflow.com/questions/18548230/cross-compiling-for-arm-armv5tejl

http://nemon.org/ipcam-ipr1631x/#SDK

How to build new packages/tools:

Make sure that your system uses the /bin/bash as default shell – otherwise the install scripts will not work.

Download SDK (see bellow)
Extract SDK: tar xzf Hi3518_SDK_V1.0.7.0.tgz
Unpack SDK: cd Hi3518_SDK_V1.0.7.0 && ./sdk.unpack
Install Toolchain: cd osdrv/toolchain/arm-hisiv100nptl-linux && chmod +x cross.install && ./cross.install
Add Toolchain to PATH: echo "export PATH=/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin:\$PATH" >> ~/.bashrc
Reload .bashrc: source ~/.bashrc
Test for working cross compiler: cd ../../../mpp2/sample/ && make

Download:

SDK (V1.0.7.0)
Hi3518_SDK_V1.0.7.0.tgz (631 MBytes)

Hi3518_SDK_V1.x.x.x directory structure is as follows:
|-- sdk.cleanup    # SDK cleanup script
|-- sdk.unpack     # SDK expand the script
|-- osdrv          # store the operating system and associated drive directory
|   |-- busybox/busybox-1.16.1.tgz # busybox source tarball
|   |-- kernel/linux-3.0.y.tgz     # linux kernel source code
|   |-- uboot/u-boot-2010.06.tgz   # uboot source code
|   |-- toolchain/arm-*            # cross tool chain store directory
|   |-- tools/*                    # tools (source), such as mkfs.cramfs
|   `-- rootfs_scripts/rootfs.tgz  # root file system
|-- package        # store directory SDK various compression packages
|-- scripts        # store shell scripts directory
|-- mpp/mpp2       # stored media processing platform directory
    |-- component  # component source code
    |-- extdrv     # board-level peripheral driver source code
    |-- include    # external header files
    |-- ko         # kernel module
    |-- lib        # release version of the library and audio library
    |-- sample     # sample source code
    `-- tools      # media processing tools

Home Assistant Integration

ideas?

sshd server

To be able to send commands easily, it would be nice to have sshd server instead of unsecure telnetd (other option would be using expect language) Dropbear ssh may be light enough to run on yi cameras https://matt.ucc.asn.au/dropbear/dropbear.html

Advantages of using sshd

  1. Replacement for telnet
  2. Replacement for ftp
  3. sshfs - mount a remote filesystem?
  4. Security
  5. Easy automation, sh/scp commands can be called remotely in a secure and easy way

Compile dropbear for armv5

(test 1) ./configure --host=arm-linux-gnueabi --prefix=/ --disable-zlib CC=arm-linux-gnueabi-gcc LD=arm-linux-gnueabi-ld

(test 2) ./configure --host=armv5tejl-linux-gnueabi --prefix=/ --disable-zlib CC=armv5tejl-linux-gnueabi-gcc LD=armv5tejl-linux-gnueabi-ld


make

Busybox

current version ( Hi Linux ) armv5 arch

# uname -a
Linux (none) 3.0.8 #1 Wed Apr 30 16:56:49 CST 2014 armv5tejl GNU/Linux
# /bin/busybox | head -1
BusyBox v1.16.1 (2012-10-22 16:45:54 CST) multi-call binary.

test -- binary https://busybox.net/downloads/binaries/

# ./busybox-armv5l  | head -1
BusyBox v1.26.2 (2017-01-10 16:10:07 GMT) multi-call binary.
# ./busybox-armv5l ls
Segmentation fault
# ./busybox-armv5l ls -l
Segmentation fault
# ./busybox-armv5l echo 
Segmentation fault

Segmentation fault --- why? (to-do)