roleoroleo/yi-hack-Allwinner-v2

Yi Dome Guard YRS3019

franciscofsales opened this issue · 40 comments

I got this Yi Dome Guard YRS3019 with base version 9.0.05.33.
Tried both r35gb and r30gb.

  • r35gb: loads up, but RTSP and snapshots do not work.
  • r30gb: loads up, seems to work but RTSP is unstable - seems to have some frame drops, I can't get them on home assistant or frigate.

Any idea or debug strategy?

Thanks

Adding on to this, I left it running the entire day while at work and it crashes from time to time.. seems to be more frequent when tracking people.

Your cam is a r30gb and it's supported in beta stage.
Because it's the only cam where the stream is hevc compressed.
The stream probably crashes because the cam doesn't have enough resources.
Did you try to use the low res stream?

@roleoroleo just tried that... low res seems to work much much better... is low res not hevc?
what else can be done? someway i can help?

Low stream is h264.
There is an experimental method that reconfigures the cam in h264, editing mtdblock7 partition.
You should try but it's a risky operation (make a backup copy!).
Create a shell script file switch2h264.sh:

#!/bin/sh

printf "\01\00\00\00" | dd of=/dev/mtdblock7 bs=1 seek=780 count=4 conv=notrunc

And another shell script file switch2h265.sh:

#!/bin/sh

printf "\02\00\00\00" | dd of=/dev/mtdblock7 bs=1 seek=780 count=4 conv=notrunc

The 1st configure high stream to h264, the 2nd to hevc (reboot is needed).
After you change to h264. I don't know if the cam is supported by the grabber.
Maybe I need to make some change.
So, if the stream doesn't work, please send me 3 copies of the file /dev/shm/fshare_frame_buf
I will check it.

I also have this camera and tried h264 script.
RTSP in H264 is now more stable. I have tested Home Assistant streaming, recording files after movement to sd and everything looks good.

ran the script, and now its great. way more stable, working like a charm! thank you so much @roleoroleo !

Does it still work with the app too?
Is snapshot working properly?

@roleoroleo snapshot is working properly, everything seems to work. I haven't tested the app... I don't use the app at all.
do you @vipp1991 ? if not I can try it for the sake of learning it

Thank you for your feedback.

Yes, It still works in app. I tested it today.

Good news, I will add a link to this issue in the readme page.

Low stream is h264. There is an experimental method that reconfigures the cam in h264, editing mtdblock7 partition. You should try but it's a risky operation (make a backup copy!). Create a shell script file switch2h264.sh:

#!/bin/sh

printf "\01\00\00\00" | dd of=/dev/mtdblock7 bs=1 seek=780 count=4 conv=notrunc

And another shell script file switch2h265.sh:

#!/bin/sh

printf "\02\00\00\00" | dd of=/dev/mtdblock7 bs=1 seek=780 count=4 conv=notrunc

The 1st configure high stream to h264, the 2nd to hevc (reboot is needed). After you change to h264. I don't know if the cam is supported by the grabber. Maybe I need to make some change. So, if the stream doesn't work, please send me 3 copies of the file /dev/shm/fshare_frame_buf I will check it.

Hi, I'm having the same issue but I don't know where to put the scripts or how to run them.

Decompress this archive into your sd card and run the script from a console.
switch2h26x.tar.gz

I got this Yi Dome Guard and after install r30gb I can't connect. Error 3006

Please. explain me better.

I have camera YI DOME GUARD
IFUSY36
SN: IR30GB
and I installed via SD card (FAT32):
Yi 1080p Dome FUSE 12.1.05 r30gb
After restart camera can't connect with wifi. In APP I receive info: "The camera is offline, please reconnect it(-3006)"

Which version? 0.2.9?
How did you connect the cam to the wifi? Through the yi app?

Version: 12.1.05.1_202302091435

I inserted the SD card to the camera
Factory/
yi-hack/
lower_half_init.sh
Camera connect direct to router (LAN)
The camera turned and stopped (as always, like without hack)
If I want to open the web interface http://Ip my camera, no connection
If I go to App YI Home, I receive:
"The camera is offline, please reconnect it(-3006)"

After removing the SD card I have it:
backup/
Factory.done/
log/
yi-hack/
lower_half_init_sh

I just tried the scripts and they left me without an image in Yi-Hack, the official app does work well.

I haven't read that you had to make a backup copy and now I don't know what to do, can I reset the camera somehow?

Yi Dome Guard:
Firmware version: 12.01.05.1_202302091435
Yi Hack version: rg30 - Firmware 0.2.9

Thank you.

Version: 12.1.05.1_202302091435

I inserted the SD card to the camera Factory/ yi-hack/ lower_half_init.sh Camera connect direct to router (LAN) The camera turned and stopped (as always, like without hack) If I want to open the web interface http://Ip my camera, no connection If I go to App YI Home, I receive: "The camera is offline, please reconnect it(-3006)"

After removing the SD card I have it: backup/ Factory.done/ log/ yi-hack/ lower_half_init_sh

Reset the cam using the button.
The cam should restart the wizard for the network connection.

I just tried the scripts and they left me without an image in Yi-Hack, the official app does work well.

I haven't read that you had to make a backup copy and now I don't know what to do, can I reset the camera somehow?

Yi Dome Guard: Firmware version: 12.01.05.1_202302091435 Yi Hack version: rg30 - Firmware 0.2.9

Thank you.

Please, explain me better.

Version: 12.1.05.1_202302091435
I inserted the SD card to the camera Factory/ yi-hack/ lower_half_init.sh Camera connect direct to router (LAN) The camera turned and stopped (as always, like without hack) If I want to open the web interface http://Ip my camera, no connection If I go to App YI Home, I receive: "The camera is offline, please reconnect it(-3006)"
After removing the SD card I have it: backup/ Factory.done/ log/ yi-hack/ lower_half_init_sh

Reset the cam using the button. The cam should restart the wizard for the network connection.

Thank you for your help, but it doesn't work
After restart ( long press the button) camera started and blink red led. On router I can't find the camera (is no connected). The camera stands and nothing happens.

You could try the unbrick procedure, to restore the factory fw.

Thanks so much for the work you put into this. I didn't salvage my Yi Dome Guard, but your instructions and code (even compiled from your sources first time) were fine otherwise. I'm sure I just don't have a supported submodel.

FYI, it's the Dome Guard YRS-3019, with a PCB marked R30GB_IN_V1_0 2019/11/04C3, firmware 9.0.05.99_202011091624

I tried the candidates:

  • Yi Dome Guard YRS | 9.0.46* | r35gb (matched the prefix, but older firmware), and
  • Yi 1080p Dome FUS | 9.0.05 | r30gb (prefix wrong, but matched the firmware & PCB markings)

I followed through on the script hacks for the h254/265, but neither produced video/stills. BUT the 2nd firmware DID move the Pan/Tilt!

Thanks again for trying to open up these devices - the effort is appreciated. Too bad these cams don't have a Pi-compatible pinout - I'd love to throw a Pi zero into one.

The label printed into the PCB doesn't match the model.
The important thing is the firmware version.
So, your cam is a R30GB.
Try again with the proper hack.

r30gb_0.3.0.tgz: This is so close to useful, it hurts.

  • I have Pan/Tilt (YAY).
  • I have motion-recording video to the SD card (YAY).
  • I am only lacking some sort of RTSP stream I can open with VLC (booo).

I've been beating up 5 or 6 types of cams to get some RTSP streams to my NAS & MotionEye, and this is the last cam on the list I want to add. I'm going to play with more of the RTSP settings; might have something misconfigured...

Again, thanks for the effort in putting these together. I am SO appreciating direct-to-cam access (Eufy needs cloud access to control PT? Jeebuz...)

Did some digging, and checked over the wd_rtsp.sh, and enabled the log file.
Something about the rRTSPServer is hung, as the CPU usage is returning 0, so it's in a "restarting RTSP" loop.

root@YiPTZ:~/etc# top -b -n 2 -d 1 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}'
0.0

The digging continues. Again, thanks for this great project. Looks like something a person could sink their teeth into!

root@YiPTZ:~/etc# top -b -n 2 -d 1 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}' 0.0

This is strange...
What about a normal top command?

I am only lacking some sort of RTSP stream I can open with VLC (booo).

Were you able to use the rtsp stream with MotionEye?
Have you tried onvif?

I just moved all my Motioneye installs to a new location, so I'm sitting here without one to test against.
ONVIF? Good idea; I didn't check that. Let's see... ODM does detect it AND the PTZ controls function, but it fails to show any stream. It does detect it as (null data excluded):


The wd_rtsp.log file I enabled is still continuing the RTSP loop:

2023-11-18 23:18:16 - Checking RTSP process...
2023-11-18 23:18:17 - Restarting rtsp process
2023-11-18 23:18:19 - Checking rmm process...
2023-11-18 23:18:29 - Checking RTSP process...
2023-11-18 23:18:30 - Restarting rtsp process
2023-11-18 23:18:32 - Checking rmm process...

Top results:

Mem: 60436K used, 472K free, 1952K shrd, 828K buff, 9892K cached
CPU: 68.2% usr 25.2% sys  0.0% nic  0.0% idle  2.1% io  0.0% irq  4.3% sirq
Load average: 6.50 2.39 0.87 5/119 3436
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
 1245     1 root     S    42736 69.9   0 44.5 ./rmm
 1636  1618 root     R      956  1.5   0 12.8 /tmp/sd/yi-hack/bin/dropbearmulti /tmp/sd/yi-hack/sbin/dropbear -R -B -p
 1633  1618 root     R      936  1.5   0 12.8 /tmp/sd/yi-hack/bin/dropbearmulti /tmp/sd/yi-hack/sbin/dropbear -R -B -p
 2710  2561 root     S     1332  2.1   0  6.6 {thumb.sh} /bin/ash /tmp/sd/yi-hack/script/thumb.sh cron
 1555     1 root     S     3004  4.9   0  3.6 ./mp4record
  446     2 root     SW       0  0.0   0  1.7 [irq/302-sunxi-m]
 1675  1671 root     S      952  1.5   0  1.1 /tmp/sd/yi-hack/usr/libexec/sftp-server
 1679  1674 root     S      952  1.5   0  0.9 /tmp/sd/yi-hack/usr/libexec/sftp-server
 3269  1753 root     S<    4100  6.7   0  0.5 rRTSPServer -m r30gb -r high -a no -p 554
 3136  3087 root     R      996  1.6   0  0.5 top
 3010  1618 root     S      916  1.5   0  0.5 /tmp/sd/yi-hack/bin/dropbearmulti /tmp/sd/yi-hack/sbin/dropbear -R -B -p
    3     2 root     RW       0  0.0   0  0.5 [ksoftirqd/0]
    7     2 root     SW       0  0.0   0  0.5 [rcu_preempt]
 2217  2212 root     S     3512  5.7   0  0.3 /tmp/sd/yi-hack/bin/imggrabber -m r30gb -r high -w
  527     2 root     SW       0  0.0   0  0.3 [mmcqd/0]
 1311     1 root     S     1488  2.4   0  0.1 /backup/tools/wpa_supplicant -c/tmp/wpa_supplicant.conf -g/var/run/wpa_su
  598     1 root     S     1164  1.9   0  0.1 ./dispatch
  294     2 root     SW       0  0.0   0  0.1 [kswapd0]
 1683     2 root     SW       0  0.0   0  0.1 [kworker/u2:2]
  210     2 root     SW       0  0.0   0  0.1 [kcompactd0]
 2709  2561 root     S     1928  3.1   0  0.0 {thumb.sh} /bin/ash /tmp/sd/yi-hack/script/thumb.sh cron
 2561  2560 root     S     1268  2.0   0  0.0 {thumb.sh} /bin/ash /tmp/sd/yi-hack/script/thumb.sh cron
 1556     1 root     S     1148  1.8   0  0.0 ./cloud
 1340     1 root     S     1048  1.7   0  0.0 udhcpc -i wlan0 -b -s /backup/tools/default.script -x hostname:YiPTZ
 1753     1 root     S      996  1.6   0  0.0 {wd_rtsp.sh} /bin/sh /tmp/sd/yi-hack/script/wd_rtsp.sh
    1     0 root     S      980  1.6   0  0.0 /sbin/init
 3087  3010 root     S      980  1.6   0  0.0 -ash
 1671  1633 root     S      980  1.6   0  0.0 ash -c /tmp/sd/yi-hack/usr/libexec/sftp-server
 2212  1622 root     S      980  1.6   0  0.0 sh -c export MOD=$(cat /tmp/sd/yi-hack/model_suffix); /tmp/sd/yi-hack/bin
  541     1 root     S      980  1.6   0  0.0 -/bin/sh
 3284  1753 root     S      980  1.6   0  0.0 sleep 10
 1674  1636 root     S      980  1.6   0  0.0 ash -c /tmp/sd/yi-hack/usr/libexec/sftp-server
 2560  1890 root     S      980  1.6   0  0.0 /bin/sh -c /tmp/sd/yi-hack/script/thumb.sh cron
 1890     1 root     S      964  1.5   0  0.0 {crond} /tmp/sd/yi-hack/bin/busybox /tmp/sd/yi-hack/usr/sbin/crond -c /va
 1720     1 root     S      964  1.5   0  0.0 {ntpd} /tmp/sd/yi-hack/bin/busybox /tmp/sd/yi-hack/usr/sbin/ntpd -p pool.
 1596     1 root     S      964  1.5   0  0.0 {httpd} /tmp/sd/yi-hack/bin/busybox /tmp/sd/yi-hack/usr/sbin/httpd -p 80
 1618     1 root     S      892  1.4   0  0.0 /tmp/sd/yi-hack/bin/dropbearmulti /tmp/sd/yi-hack/sbin/dropbear -R -B -p
 1622     1 root     S      880  1.4   0  0.0 mqttv4
 1805     1 root     S      680  1.1   0  0.0 wsd_simple_server --pid_file /var/run/wsd_simple_server.pid --if_name wla
   12     2 root     SW       0  0.0   0  0.0 [kworker/u2:1]
  512     2 root     SW       0  0.0   0  0.0 [kworker/0:2]
    6     2 root     SW       0  0.0   0  0.0 [kworker/u2:0]
  587     2 root     SW       0  0.0   0  0.0 [RTW_CMD_THREAD]
  518     2 root     SW<      0  0.0   0  0.0 [kworker/0:1H]
  534     2 root     SWN      0  0.0   0  0.0 [jffs2_gcd_mtd4]
  262     2 root     SW       0  0.0   0  0.0 [kworker/0:1]
  519     2 root     SW       0  0.0   0  0.0 [kworker/0:3]
  448     2 root     SW       0  0.0   0  0.0 [irq/166-sdc0 cd]
  526     2 root     SW<      0  0.0   0  0.0 [bioset]
  413     2 root     SW<      0  0.0   0  0.0 [bioset]
  408     2 root     SW<      0  0.0   0  0.0 [bioset]
  418     2 root     SW<      0  0.0   0  0.0 [bioset]
  398     2 root     SW<      0  0.0   0  0.0 [bioset]
  388     2 root     SW<      0  0.0   0  0.0 [bioset]
  383     2 root     SW<      0  0.0   0  0.0 [bioset]
  393     2 root     SW<      0  0.0   0  0.0 [bioset]
  403     2 root     SW<      0  0.0   0  0.0 [bioset]
  269     2 root     SW<      0  0.0   0  0.0 [watchdogd]
  263     2 root     SW<      0  0.0   0  0.0 [cfg80211]
  284     2 root     SW<      0  0.0   0  0.0 [spi0]
  255     2 root     SW       0  0.0   0  0.0 [sys_user]
  212     2 root     SW<      0  0.0   0  0.0 [bioset]
  211     2 root     SW<      0  0.0   0  0.0 [crypto]
  214     2 root     SW<      0  0.0   0  0.0 [kblockd]
  207     2 root     SW       0  0.0   0  0.0 [oom_reaper]
   11     2 root     SW       0  0.0   0  0.0 [kdevtmpfs]
   10     2 root     SW<      0  0.0   0  0.0 [lru-add-drain]
  208     2 root     SW<      0  0.0   0  0.0 [writeback]
    8     2 root     SW       0  0.0   0  0.0 [rcu_sched]
    4     2 root     SW       0  0.0   0  0.0 [kworker/0:0]
    2     0 root     SW       0  0.0   0  0.0 [kthreadd]
    5     2 root     SW<      0  0.0   0  0.0 [kworker/0:0H]
    9     2 root     SW       0  0.0   0  0.0 [rcu_bh]
  378     2 root     SW<      0  0.0   0  0.0 [bioset]

Update. I did turn off the "disable cloud" button (that allows the Yi App to see it), and it DOES stream in the Yi App to my Android. Weird. RTSP and ONVIF still dead though.

Well, good on ya for making the YiCam app still functional with this new firmware in place! Totally didn't expect that to work.

In the previous top command rRTSPServer uses 0.5% of CPU.
I don't understand why
top -b -n 2 -d 1 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}'
returns 0

Please try to increase the delay time:
top -b -n 2 -d 2 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}'
or
top -b -n 2 -d 3 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}'

root@YiPTZ:~# top -b -n 2 -d 2 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}'
0.0
root@YiPTZ:~#
root@YiPTZ:~# top -b -n 2 -d 3 | grep rRTSPServer | grep -v grep | tail -n 1 | awk '{print $8}'
0.3
root@YiPTZ:~#

netstat does indeed show nothing on port 554. Continuing investigation...

root@YiPTZ:/tmp/sd# /tmp/sd/yi-hack/bin/netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0    448 192.168.1.166:22        192.168.1.126:29892     ESTABLISHED
netstat: /proc/net/tcp6: No such file or directory
udp        0      0 0.0.0.0:3702            0.0.0.0:*
netstat: /proc/net/udp6: No such file or directory
netstat: /proc/net/raw6: No such file or directory
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                      1888 /var/run/wpa_supplicant-global
unix  2      [ ]         DGRAM                      1909 /var/run/wpa_supplicant/wlan0
unix  2      [ ]         DGRAM                      1573
unix  2      [ ]         DGRAM                      2196
unix  2      [ ]         DGRAM                      2458
unix  2      [ ]         DGRAM                      2193
unix  2      [ ]         DGRAM                      1103

trying to manually run the rRTSPServer. I'm unsure what I'm looking for on the debug:

root@YiPTZ:/tmp/sd# rRTSPServer -m r30gb -r low -a no -p 544 -d 1
1700456857894: the size of the buffer is 1786156
1700456857895: capture - mapping file fshare_frame_buf, size 1786156, to b6ca1000
1700456857897: capture - closing the file fshare_frame_buf
1700456857897: capture - starting capture main loop
1700456857898: capture - buf_idx_end == buf_idx_end_prev
1700456857910: capture - buf_idx_end == buf_idx_end_prev
1700456857921: capture - buf_idx_end == buf_idx_end_prev
1700456857931: capture - fhs[i].len > input_buffer.size - input_buffer.offset
1700456857932: capture - frame_sync == 0
1700456857942: capture - buf_idx_end == buf_idx_end_prev
1700456857952: capture - fhs[i].len > input_buffer.size - input_buffer.offset
1700456857952: capture - frame_sync == 0
1700456857962: capture - buf_idx_end == buf_idx_end_prev
1700456857972: capture - buf_idx_end == buf_idx_end_prev
1700456857983: capture - fhs[i].len > input_buffer.size - input_buffer.offset
1700456857983: capture - frame_sync == 0
1700456857993: capture - fhs[i].len > input_buffer.size - input_buffer.offset
1700456857993: capture - frame_sync == 0

root@YiPTZ:/tmp/sd# rRTSPServer -m r30gb -r low -a no -p 544 -d 4
1700456975849: the size of the buffer is 1786156

(sits here, no more debug messages)

Whoa! Changed the RTSP server to model r35gb, and I have a feed!
I editted the /tmp/sd/yi-hack/model_suffix file to r35gb, rebooted, and now I have RTSP and ONVIF functionality. Woohoo!
I don't seem to have snapshots, but I can live without that for now. Also the PTZ page doesn't show video, but does control the cam movement. I see in the HTML that these are related. Will do more digging.

Imma Dumbass. Just turn on the snapshot function. Sigh. ALL GOOD NOW. WONDERFUL!
Looking for a donation link next...

Thank you for the donation.
But I don't understand why now it's working.
If your cam has fw 9.0.05 can't be a r35gb. It must work with r30gb.

Another detail. Editing the model_suffix file is not enough to change model.
You should overwrite /tmp/sd/lower_half_init.sh with the proper version.

Hi,

I installed FW 12.1.05.1 und YI-hack 0.3.2 r30gb

PTZ and rtsp-stream didn't work.

Can you help?

Please, open a new issue and add more details.

Whoa! Changed the RTSP server to model r35gb, and I have a feed!

I editted the /tmp/sd/yi-hack/model_suffix file to r35gb, rebooted, and now I have RTSP and ONVIF functionality. Woohoo!
I don't seem to have snapshots, but I can live without that for now. Also the PTZ page doesn't show video, but does control the cam movement. I see in the HTML that these are related. Will do more digging.
Imma Dumbass. Just turn on the snapshot function. Sigh. ALL GOOD NOW. WONDERFUL! Looking for a donation link next...

+1. I change model_suffix file to r35gb too and feeds working for now.
My camera:
Model: Yi Dome Guard, YRS 3019
SN: KFUSY36
Firmware: 12.1.05.1_202302091435

Same as above.
Editing the model_suffix file is not enough to change model.
You should overwrite /tmp/sd/lower_half_init.sh with the proper version.
https://github.com/roleoroleo/yi-hack-Allwinner-v2/blob/master/sysroot/r30gb/lower_half_init.sh