Иследование китайской IP камеры

Дмитрий DarkByte Москин

Мой блог, да.
logo

Иследование китайской IP камеры

Опубликовано 14.02.2015 автором Дмитрий Москин
Наконец-то выдались свободные выходные для того, чтобы заняться китайской IP камерой. Картинка с камеры оказалась вполне себе ничего, продавец обещал 720p, сенсор OV9712 действительно снимает 1280х800, хотя камера выдаёт 1280х720. Два ИК светодиода мощностью ватта по три каждый и механическая шторка ИК фильтра позволяют камере не только заглядывать под кожу, но и получать довольно качественную картинку в темноте.




Веб интерфейс довольно скуден, он позволяет просматривать трансляцию с камеры в двух режимах (для ПК и для мобилы) и предоставляет доступ к настройкам. И всё бы хорошо, но отсутствует возможность подключиться к камере по SSH/Telnet, а ведь хочется. Единственная настройка, которая казалось бы близка к этому называется Advanced->Terminal, но там что-то непонятное написано про интерфейс RS-485 и протокол PELCO-D, в общем явно мимо, у камеры наружу торчит только розетка RJ-45 и штекер для питания.



Разбор показал наличие нераспаянных и неиспользованных пинов. В частности нераспаянный блок из четырёх пинов размером побольше - это USB-host, а чуть поменьше - это UART. Не подключенная колодка используется для подключения дополнительной переферии, коей могут быть: SD карта, сигнальный выход для реле, вход для микрофона, выход для динамика, выходы для управления сервами поворота камеры. В моём случае ничего из этого в камере не предусмотрено. Кстати, USB-host выдаёт для питания устройства 3.3В (камера питается от 12В) и используется для подключения WiFi донглов или 3G модема. Залитая у меня прошивка поддерживает три чипсета WiFi: MT7601U, RT5370 и RT2870.



Методом тыка находим какие пины в колодке UART отвечают за RX и TX, землю берём из надёжного источника, скорость 115200, остальное по умолчанию. Видим лог загрузки, радуемся, видим предложение авторизоваться, пробуем все известные стандартные комбинации логинов, печалимся. По имеющимся данным пытаемся найти прошивку для данной камеры, но почему то не получается. Возвращаемся к U-BOOT и соглашаемся прервать загрузку.

U-Boot 2010.06 (Mar 18 2014 - 03:42:32)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xC8 0x40 0x18 0xC8 0x40 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"GD25Q128"
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 1

hisilicon # ?
? - alias for 'help'
base - print or set address offset
bootm - boot application image from memory
bootp - boot image via network using BOOTP/TFTP protocol
cmp - memory compare
cp - memory copy
crc32 - checksum calculation
ext2load- load binary file from a Ext2 filesystem
ext2ls - list files in a directory (default /)
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls - list files in a directory (default /)
getinfo - print hardware information
go - start application at address 'addr'
help - print command description/usage
loadb - load binary file over serial line (kermit mode)
loady - load binary file over serial line (ymodem mode)
loop - infinite loop on address range
md - memory display
mii - MII utility commands
mm - memory modify (auto-incrementing address)
mtest - simple RAM read/write test
mw - memory write (fill)
nm - memory modify (constant address)
ping - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
rarpboot- boot image via network using RARP/TFTP protocol
reset - Perform RESET of the CPU
saveenv - save environment variables to persistent storage
setenv - set environment variables
sf - SPI flash sub-system
tftp - tftp - download or upload image via network using TFTP protocol
usb - USB sub-system
usbboot - boot from USB device
version - print monitor version
hisilicon #


Предоставленный дополнительный функционал загрузчика внушает. В целом можно по tftp выгрузить себе прошивку, распаковать её, выполнить необходимые изменения, запаковать обратно и загрузить по tftp. Но в данном случае большого количества изменений не требуется, поэтому поступим проще. Добавляем к коммандной строке ядра опцию init и загружаемся.

hisilicon # setenv bootargs mem=43M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:512K(boot),2560K(kernel),13M(rootfs) init=/bin/sh

hisilicon # sf probe 0
16384 KiB hi_sfc at 0:0 is now current device
hisilicon # sf read 0x82000000 0x80000 0x280000

hisilicon # bootm 0x82000000
## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-3.0.8
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2598364 Bytes = 2.5 MiB
Load Address: 80008000
Entry Point: 80008000
Loading Kernel Image ... OK
OK

Starting kernel ...

...
...
...

/bin/sh: can't access tty; job control turned off
# id
uid=0(root) gid=0(root)

# cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
admin:x:501:501::/home/admin:/bin/sh

# cat /etc/shadow
root:$1$tiaLlxGM$byeTUfQgqyET5asfwwNjg0:16199:0:99999:7:::
admin:$1$rHWQwR5V$i4FVDvwhuzau8msvAfHEt.:16199:0:99999:7:::


Прогнав пароли по словарям и не найдя ничего интересного решил особо не заморачиваться и сменил пароль для root на root и для admin на admin.
# passwd
/bin/sh: passwd: not found

# echo "root:\$1\$tiaLlxGM\$dYNMJJQRKN2buGE0u/R88/:16199:0:99999:7:::" > /etc/shadow
# echo "admin:\$1\$tiaLlxGM\$uIJ4ahSynKJuzEzWdw7sp/:16199:0:99999:7:::" >> /etc/shadow
# sync
# halt


Камера загрузилась, пароль подходит, консоль нам доступна, но только по UART, а хочется ведь по сети. В архиве с резервной копией настроек можно найти файл config_debug.ini и в нём опцию telnet->tenable, но, к сожалению, камера не захотела принимать изменения в этом файле и сбрасывала настройку в дефолт. Посмотрев код основного бинарника камеры, ipc_server, увидел, что данная настройка просто запускает telnetd. Но его нет. И не нужно, подумалось мне. Будем ставить сразу SSH, а если быть точнее, то dropbear. Собираем на скорую руку кросс-компилятор под ARM и компилируем демона.

wget http://matt.ucc.asn.au/dropbear/releases/dropbear-2015.67.tar.bz2 

CC=arm-linux-gnueabi-gcc ./configure --target=arm-linux-gnueabi --host=arm-linux-gnueabi --prefix=/root/src/out --disable-zlib --disable-syslog --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx
MULTI=1 STATIC=1 PROGRAMS="dropbear dropbearkey scp" make strip


Так как система на камере использует uLibc, то правильно было бы собрать dropbear с использованием данной библиотеки, но сильно заморачиваться не хотелось, свободного места на камере вагон (два с лишним мегабайта), поэтому пока что сделал статическую сборку, а glibc притащил с собой. Конкретно потребовались библиотеки: libc.so.6, ld-linux.so.3, libnss_compat.so.2 (+/etc/nsswitch.conf), libnsl.so.1, без них SSH стартовал, но не видел пользователей в passwd и shadow файлах.

# tftp -l /mnt/mtd/ipc/dropbearmulti -r dropbearmulti -g 192.168.1.1
dropbearmulti 100% |*******************************| 783k --:--:-- ETA

# chmod +x /mnt/mtd/ipc/dropbearmulti

# ln -s /mnt/mtd/ipc/dropbearmulti /sbin/scp
# ln -s /mnt/mtd/ipc/dropbearmulti /sbin/dropbear
# ln -s /mnt/mtd/ipc/dropbearmulti /sbin/dropbearkey

# mkdir /etc/dropbear/
# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
# dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

# dropbear


Быстренько оглядываем, что имеем:

# cat /proc/version
Linux version 3.0.8 (root@localhost.localdomain) (gcc version 4.4.1 (Hisilicon_v100(gcc4.4-290+uclibc_0.9.32.1+eabi+linuxpthread)) ) #1 Tue Mar 18 03:54:42 MSK 2014

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

Hardware : hi3518
Revision : 0000
Serial : 0000000000000000


# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 13.0M 10.3M 2.7M 79% /
tmpfs 128.0K 4.0K 124.0K 3% /dev
tmpfs 12.0M 1.9M 10.1M 16% /mnt/mtd/ipc/tmpfs


#
arping expr hostname mv su
ash false hush netstat sulogin
awk fdisk hwclock nice sum
basename fgrep id nohup swapoff
btools fold ifconfig ping swapon
busybox free init pkill sync
cat freeramdisk insmod poweroff tail
chmod fsync iwconfig printenv tar
chown ftpget iwpriv printf tftp
cp ftpput kill ps top
cttyhack getty killall pwd touch
cut grep killall5 readlink tr
date gunzip ln reboot true
dd gzip logger rm tty
depmod halt login rmdir udevd
df head logname rmmod udevinfo
dhcprelay hexdump ls route udevstart
dirname hiddrs lsmod sed udhcpc
dmesg hier mdev seq udhcpd
dnsdomainname hiew mesg sfdisk umount
dosfsck hil2s mkdir sh uname
du himc mkdosfs sleep unzip
dumpleases himd mknod sort vi
echo himd.l modprobe split wc
egrep himm mount stat zcat
env hostid msh stty

# ls /mnt/mtd/ipc/
allexit.sh getdevmac sd_first
asc16 goolink sdmore
cdisk.sh hzk16 setlinuxtime
chg_net.sh ipc_server setnet
chknet libNetLib.so setrtctime
chksensor load_drv th3ddns.sh
chksock load_media tmpfs
chkwifi.sh loadp2p.sh tutk
clear.sh mkfs.vfat updatewifi.sh
conf modules upgrade
config_default.zip net_detect upnp_map
dana p2p_obj upnpmap.sh
danap2p platform.sh web
ddns_update proxy wfsort
dhcp.sh readcfg wifi_setsta.sh
exclude.lst run wifi_wps.sh
facddns.sh runarp wifiget
fdisk.sh sd wifiset.sh
findap.sh sd.sh
gerddns sd_detect

# ls /mnt/mtd/ipc/conf
TZ config_facddns.ini config_run3g.ini
config_3thddns.ini config_image.ini config_schedule.ini
config_action.ini config_md.ini config_sysinfo.ini
config_alarm.ini config_net.ini config_timer.ini
config_com485.ini config_ntp.ini config_user.ini
config_cover.ini config_objsave.ini ipcam_upnp.xml
config_debug.ini config_onvif.ini resolv.conf
config_defaultimage.ini config_osd.ini udhcpc
config_devices.ini config_platform.ini udhcps
config_devtype.ini config_priv.ini wifi.conf
config_devtypese.ini config_ptz.ini
config_encode.ini config_recsnap.ini


Можно настроить DDNS. Есть поддержка стандартна ONVIF. Есть поддержка MJPEG, но добыть правильную ссылку на него не удалось. Умеет детектировать движение в указанных регионах и заливать фото на FTP или отправлять уведомления на Email. Видео поток можно забирать по rtsp, первый поток лежит по адресу /11. Из коробки камера поддерживает несколько сервисов для стриминга видео с камеры. Но самое забавное, что по умолчанию один из сервисов включен, но в веб интерфейсе этого не видно. Успокаивает только то, что сервис не работает. Ещё есть один отстук на сайт производителя (Shenzhen Hichip Vision Technology Co.,LTD), но с ним я пока не особо разобрался, но он зачем то использует HTTP Basic Authentication: ZTEALE234=2opWae для доступа к www.hipcam.net

Пока камера была в разобранном состоянии, заметил, что процессор разогревается градусов до 80, и у него отсутствует какой-либо радиатор. На время тестирования приклеил небольшой радиатор, но его габариты не позволяли оставить его, поэтому из медных клемм сделал несколько лепестков и дополнительно соединил медным проводом с имеющимися радиаторами ИК подсветки. Получилось страшновато, но работает и совсем не греется.





Ну и напоследок dmesg:
U-Boot 2010.06 (Mar 18 2014 - 03:42:32)

Check spi flash controller v350... Found
Spi(cs1) ID: 0xC8 0x40 0x18 0xC8 0x40 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"GD25Q128"
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
16384 KiB hi_sfc at 0:0 is now current device

## Booting kernel from Legacy Image at 82000000 ...
Image Name: Linux-3.0.8
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2598364 Bytes = 2.5 MiB
Load Address: 80008000
Entry Point: 80008000
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 3.0.8 (root@localhost.localdomain) (gcc version 4.4.1 (Hisilicon_v100(gcc4.4-290+uclibc_0.9.32.1+eabi+linuxpthread)) ) #1 Tue Mar 18 03:54:42 HKT 2014
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: hi3518
Memory policy: ECC disabled, Data cache writeback
AXI bus clock 200000000.
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 10922
Kernel command line: mem=43M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:512K(boot),2560K(kernel),13M(rootfs)
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 43MB = 43MB total
Memory: 38708k/38708k available, 5324k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc3000000 - 0xfe000000 ( 944 MB)
lowmem : 0xc0000000 - 0xc2b00000 ( 43 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0022000 ( 104 kB)
.text : 0xc0022000 - 0xc0491000 (4540 kB)
.data : 0xc0492000 - 0xc04b0e00 ( 124 kB)
.bss : 0xc04b0e24 - 0xc04c4170 ( 77 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:32 nr_irqs:32 32
sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 42949ms
Console: colour dummy device 80x30
Calibrating delay loop... 218.72 BogoMIPS (lpj=1093632)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Serial: AMBA PL011 UART driver
uart:0: ttyAMA0 at MMIO 0x20080000 (irq = 5) is a PL011 rev2
console [ttyAMA0] enabled
uart:1: ttyAMA1 at MMIO 0x20090000 (irq = 5) is a PL011 rev2
bio: create slab at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
fuse init (API version 7.16)
msgmni has been set to 75
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler cfq registered
Spi id table Version 1.22
Spi(cs1) ID: 0xC8 0x40 0x18 0xC8 0x40 0x18
SPI FLASH start_up_mode is 3 Bytes
Spi(cs1):
Block:64KB
Chip:16MB
Name:"GD25Q128"
spi size: 16MB
chip num: 1
3 cmdlinepart partitions found on MTD device hi_sfc
Creating 3 MTD partitions on "hi_sfc":
0x000000000000-0x000000080000 : "boot"
0x000000080000-0x000000300000 : "kernel"
0x000000300000-0x000001000000 : "rootfs"
Fixed MDIO Bus: probed
himii: probed
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
hiusb-ehci hiusb-ehci.0: HIUSB EHCI
hiusb-ehci hiusb-ehci.0: new USB bus registered, assigned bus number 1
hiusb-ehci hiusb-ehci.0: irq 15, io mem 0x100b0000
hiusb-ehci hiusb-ehci.0: USB 0.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
hiusb-ohci hiusb-ohci.0: HIUSB OHCI
hiusb-ohci hiusb-ohci.0: new USB bus registered, assigned bus number 2
hiusb-ohci hiusb-ohci.0: irq 16, io mem 0x100a0000
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 10
NET: Registered protocol family 17
NET: Registered protocol family 15
lib80211: common routines for IEEE802.11 drivers
Registering the dns_resolver key type
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (jffs2 filesystem) on device 31:2.
Freeing init memory: 104K

_ _ _ _ _ _ _ _ _ _ _ _
\ _ _ _ _ _ ___
/ /__/ \ |_/
/ __ / - _ ___
/ / / / / /
_ _ _ _/ / / \_/ \_ ______
___________\___\__________________

[RCS]: /etc/init.d/S00devs
[RCS]: /etc/init.d/S01udev
udevd (408): /proc/408/oom_adj is deprecated, please use /proc/408/oom_score_adj instead.
[RCS]: /etc/init.d/S80network
ADDRCONF(NETDEV_UP): eth0: link is not ready
[416] Jan 01 00:00:03 Failed loading /etc/dropbear/dropbear_ecdsa_host_key
[417] Jan 01 00:00:03 Running in background
sd
sd
sinit driver init successful!
extalarm driver init successful !
Hisilicon Watchdog Timer: 0.01 initialized. default_margin=60 sec (nowayout= 0, nodeamon= 0)
encript driver init successful!
relay driver init successful!

(none) login: reset driver init successful!
PHY: himii:00 - Link is Up - 100/Full
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
rled driver init successful!
ircut driver init successful!
saradc driver init successful!
rs485 driver init successful!
audioin driver init successful!
light driver init successful !
Hisilicon Media Memory Zone Manager
hi3518_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
Hisilicon UMAP device driver interface: v3.00
pa:82b00000, va:c3200000
load sys.ko for Hi3518...OK!
load viu.ko for Hi3518...OK!
ISP Mod init!
load vpss.ko ....OK!
load venc.ko for Hi3518...OK!
load group.ko for Hi3518...OK!
load chnl.ko for Hi3518...OK!
load h264e.ko for Hi3518...OK!
load jpege.ko for Hi3518...OK!
load rc.ko for Hi3518...OK!
load region.ko ....OK!
load vda.ko ....OK!
hi_i2c init is ok!
Kernel: ssp initial ok!
acodec inited!
insert audio
==== Your input Sensor type is ov9712 ====
ifconfig: SIOCGIFFLAGS: No such device
ADDRCONF(NETDEV_UP): eth0: link is not ready
PHY: himii:00 - Link is Up - 100/Full
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
ifconfig: SIOCGIFFLAGS: No such device
killall: udhcpc: no process killed
udhcpc (v1.16.1) started
Sending discover...
Sending select for 192.168.1.22...
Lease of 192.168.1.22 obtained, lease time 43200
1
2

RTC time 1970-01-01 00:00:00
Set system time as date -s 1970.01.01-00:00:00
date: can't set date: Invalid argument
Thu Jan 1 00:00:00 STD 1970
umount: can't forcibly umount /mnt/mtd/ipc/tmpfs/sd: Invalid argument
killall: gerddns: no process killed
sh: 1: unknown operand
killall: upnp_map: no process killed
killall: upnp_map: no process killed
killall: ddns_update: no process killed
workthread: log init succeed.
libs_initnettype(Lan): succeed.
macflag: 0
videocomm(0): 6 1280 720
videocomm(1): 7 640 352
videocomm(2): 8 320 176
TimeZone: -8
workthread: init ini succeed.
workthread: ntpsvr init succeed.
workthread: reset init succeed.
workthread: wifikey init succeed.
workthread: timerreboot init succeed.
ptz type: rs485
workthread: ptz init succeed.
HI_Media_SDKInit: efreq=50,resolution=31,maxresolution=6,maxwidth=1280,maxheight=720
timerreboot: entry proc,enable=0,reboot time=00:00:00
HI_Ntp_Proc: enable=1, svr=time.windows.com, interval=1
ntp connect failture
libs_GetNTPTime: failed!
HI_Media_SDKInit: sensor: 25
HI_Media_SDKInit: display mode: blackwhite
extalarm: off open
color(ini): f=0x007fff, b=0x000000, trans=64
ldc: enable=0, ratio=0, xoffset=0, yoffset=0
initaudio: inputtype=2, input=31, output=79, aec=0
encode(chn=0): profile=1,resolution=6,cbr=0,bitrate=2048,frame=20,iframe=40,quality=0,minq=22,maxq=38
encode(chn=0): audioenable=0, audiotype=2
encode(chn=1): profile=1,resolution=7,cbr=0,bitrate=512,frame=20,iframe=40,quality=0,minq=22,maxq=38
encode(chn=1): audioenable=0, audiotype=2
OSD(area=0): show=1, pos=0, x=976, y=0, str=YYYY-MM-DD hh:mm:ss
OSD(area=1): show=1, pos=0, x=0, y=0, str=IPCAM
COVER(area=0): show=0, x=0, y=0, w=160, h=160
COVER(area=1): show=0, x=1120, y=0, w=160, h=160
COVER(area=2): show=0, x=0, y=560, w=160, h=160
COVER(area=3): show=0, x=1120, y=560, w=160, h=160
audio: denoise=1
audiovol: 1 31 79
HI_Media_SDKInit: HI_SDK_StartEncode(chn=0) succeed.
HI_Media_SDKInit: HI_SDK_StartEncode(chn=1) succeed.

sdkmgr: max channel=2
HI_Record_Stop
HI_Media_RecInit: HI_Record_Start(chn=0) succeed.
HI_Websvr_Init: init media succeed.
HI_Websvr_Init: PBServer start.
HI_Websvr_Init: webport[80], root[/mnt/mtd/ipc/web].
ircut: saradc_switch_value: 250
rled: close.
rled: open.
workthread: ircut init succeed.
rled: auto.
workthread: infrared init succeed.
workthread: netdetect init succeed.
workthread: search start.
workthread: wdt init succeed.
===================================================
ipc_server start : 1970-01-01 08:00:18
ipc_server version: V7.1.9.2.1-20140922
===================================================
HI_SearchSvr_Proc: add membership failed
HI_SearchSvr_Proc: add membership failed
netdetect: WiFi (Disable).
netdetect: netflag(Lan).
wdt: default timeout: 60 sec.
wdt: default timeout: 5 sec.
ircut: switch status off.
sh: 1: unknown operand
sh: 1: unknown operand
sh: 1: unknown operand
sh: 1: unknown operand
sh: 1: unknown operand