schneemaier / yacam

Yet Another Camera for Wyxe V2 with Ingenic T20 chips
GNU General Public License v3.0
4 stars 0 forks source link

Add support for the T20 chip with 64MB ram #6

Open schneemaier opened 1 year ago

olek87 commented 5 months ago

Hi. Last year we wrote on your project and the 64MB camera i have. then my second child came and i had to cut back projects. Recently i had some time and once again started fiddling around with the xiaofang.

Some remarks: The build-process is not suitable for the 64mb version: setup_buildroot.sh builds a kernel with the 128MB kernel-cmdline (CONFIG_CMDLINE=) and build_buildroot.sh (64) does not rebuild the kernel. I would suggest to disable (CONFIG_CMDLINE_OVERRIDE=y) and set the bootargs in uboot.

So I copied the enhancment for 64 systems from build_buildroot.sh into setup_buildroot.sh (64) and got a working kernel. unfortunately the rootfs still has some issues (no wifi). But if you build rootfs again with build_buildroot.sh 64 you get a kinda working rootfs - boot ok, wifi ok!, sdcard mount (including swap partition) ok

Still i cant get any video, but it may be connected to the fact, that my nand flash is not "original" any more. I flashed the images manually: 0-40000 uboot, 40k-240k uimage 240k -ad0k rootfs. d10k -end blanked. it seems mtdblock4 (config) gets formated by yacam itself (config partition)

but the other partitions (extra, para, flag) are not made.

some errors from bootlog: Mounting real root filesystem.... Switching root to /newroot mount: mounting /dev/mtdblock3 on /user failed: No such file or directory

mount: mounting /dev/mtdblock5 on /params failed: No such file or directory /etc/init.d/S30wifi: line 117: can't open /params/config/.product_config: no such file umount: can't unmount /params: No such file or directory

(but wifi starts ok)

Can i create te necessary partitions (user and params) from yacam cli itself? if yes, how?

And then video: _First it seems to get loaded fine: Starting capture... Adding necessary camera modules [ 14.704029] name : i2c-gpio1 nr : 1 [ 14.707655] name : i2c0 nr : 0 [ 14.793601] sensor_read: addr=0xa value = 0xf [ 14.798616] sensor_read: addr=0xb value = 0x22 [ 14.803343] info: success sensor find : jxf22 root: Determined image sensor model as jxf22 [ 14.950258] register all isp device successfully! [ 14.960001] @@@@ tx-isp-probe ok @@@@@ Thu Jan 1 00:00:15 UTC 1970 - nightmode off

Audio is set to disabled in yacam.conf. Skipping starting ffmpeg Setting up 2 v4l2loopback device(s) [ 17.316959] v4l2loopback driver version 0.12.5 loaded root: Starting video frame capture process root: Waiting for initialization of v4l2 device [ 17.873404] set sensor gpio as PA-low-10bit [ 17.908359] jxf22 0-0040: jxf22 chip found @ 0x40 (i2c0) [ 17.913908] tx_isp: Registered sensor subdevice jxf22 0-0040 root: Waiting for initialization of v4l2 device [ 18.678569] ###### image_tuning_v4l2_open 4329 ####### [ 18.755453] &&& chan1 scaler.max_width = 1920 max_height = 1080 min_width = 128 minheight = 128 &&& root: Waiting for initialization of v4l2 device root: Waiting for initialization of v4l2 device root: Waiting for initialization of v4l2 device root: Waiting for initialization of v4l2 device root: Unable to initialize v4l2 device root: Starting v4l2rtspserver

But then: VIDIOC_STREAMOFF: Bad file descriptor VIDIOC_REQBUFS: Bad file descriptor

Starting mjpg_streamer (15 fps): OK Mar 22 09:11:37 MJPG-streamer [412]: starting application Mar 22 09:11:37 MJPG-streamer [412]: MJPG Streamer Version.: 2.0

Mar 22 09:11:37 MJPG-streamer [412]: input_init() return value signals to exit

Do you know what it can be?

Here is my Kernel command line: console=ttyS1,115200n8 mem=39M@0x0 ispmem=5M@0x2700000 rmem=20M@0x2C00000 init=/linuxrc rootfstype=squashfs root=/dev/mtdblock2 rw mtdparts=jz_sfc:256k(boot),2048k(kernel),8768k(root),4736k(extra),256k(config),256k(para),-(flag) console=tty0 console=ttyS1,115200n8 mem=39M@0x0 ispmem=5M@0x2700000 rmem=20M@0x2C00000 init=/linuxrc rootfstype=squashfs root=/dev/mtdblock2 rw mtdparts=jz_sfc:256k(boot),2048k(kernel),8768k(root),4736k(extra),256k(config),256k(para),-(flag)

schneemaier commented 5 months ago

hello, thanks for the feedback. Currently I am busy with other projects, hence the missing updates to this one.

I try to answer your questions:

  1. building for 64MB versinons requires to run the container, connect to the container and run the build command from inside the container. I have not documented this fully due to lack of time
  2. I cannot CONFIG_CMDLINE_OVERRIDE as uboot does not allow configuration changes (at least on Wyze cameras there are no varibale storage space in flash for uboot)
  3. For the video I made a few tests in the past, It seems that on the 64MB version the ingenic capture code exists with illegal instructiuons. I had no time to dig into the ingenic code for the camera capture

'Can i create te necessary partitions (user and params) from yacam cli itself? if yes, how?'

if the partitions show up under /dev/ then you only have to format them to JFFS2. You can do ythat from the command line.

olek87 commented 5 months ago

hi, sure, no haste. to 1.: i made the images from the docker container. to 2: usually you set the biootargs in uboot via setenv and then safeenv. do the wyze cams have no ubbot? to 3: i dont fully understand? so in the "original" image they made some kind of workaround? would you give me a hint where to look?

and finally the formattiing.: there is no mkfs command at least in the 64mb rootfs. or how qwould you format the mtd?

schneemaier commented 5 months ago

Hi,

  1. I ususally run the build with a make clean command as I had the same issue with the kernel and did not spent time on fixing it make clean; /buildscripts/build_buildroot.sh 64
  2. You are correct, however on these cameras the partition where the varaibles stored is missing, thus every varaible save command is failing with error. There is an explanation about this in the Dafang repositories somewhere.
  3. This the software for the video capture: https://github.com/schneemaier/ingenic_videocap It does not run on 64MB version, and U am not sure why. If you execute it from the command line it results in a "illegal instruction" and exits
  4. Usually I don't have to format the partition as it is the default layout. Once I did it with copiing the mkfs.jffs2 binary from Dafang on an sdcard an ran it from there. But this was long time ago. Normally mounting the partition should create the JFFS2 filesystem too, but you may have to whipe the partiton first (maybe with dd)
schneemaier commented 3 weeks ago

I am still unable to get the video capture to work. Meanwhile I found a new (much more advanced) project and the 64MB version works with that firmware. Checkout https://thingino.com/

Pros:

Cons: