OpenIPC / builder

Experimental system for building OpenIPC firmware for known devices
https://openipc.org
MIT License
27 stars 26 forks source link

SSC333 Compatibility (Tapo C110) #2

Open cjdell opened 1 year ago

cjdell commented 1 year ago

Hello. I notice there is no guide for SSC333 however there are references to it in the source code. Does this mean that it could still work (unofficially) if I build the firmware myself? Is there any way I can help with the testing so support for this chip can be added?

Thank you

Belltozar commented 6 days ago

Does someone make OpenIPC fpv with tapoc110? It doesn’t have usb ports but have gpio and sd card slot(that is usb0 if I don’t mistake) does it possible to connect external WiFi module ?

geedubess commented 6 days ago

Does someone make OpenIPC fpv with tapoc110? It doesn’t have usb ports but have gpio and sd card slot(that is usb0 if I don’t mistake) does it possible to connect external WiFi module ?

On my model at least, the atbm6012b wifi peripheral is on a USB bus. That bus is not readily accessible from test pads, though. I'm not sure what you would gain from adding an external wifi module, especially for an environment with vibration. The SD/MMC interface is not USB (it is a much simpler interface that most SoCs can directly use without implementing a complex USB stack).

There are pads available for ethernet, but I'm not sure what their status is. I'd think that if you wanted a FPV camera, an all-in-one this bulky might be low on your list - I'd think that a separate camera/controller board would be more ideal.

Belltozar commented 5 days ago

Does someone make OpenIPC fpv with tapoc110? It doesn’t have usb ports but have gpio and sd card slot(that is usb0 if I don’t mistake) does it possible to connect external WiFi module ?

On my model at least, the atbm6012b wifi peripheral is on a USB bus. That bus is not readily accessible from test pads, though. I'm not sure what you would gain from adding an external wifi module, especially for an environment with vibration. The SD/MMC interface is not USB (it is a much simpler interface that most SoCs can directly use without implementing a complex USB stack).

There are pads available for ethernet, but I'm not sure what their status is. I'd think that if you wanted a FPV camera, an all-in-one this bulky might be low on your list - I'd think that a separate camera/controller board would be more ideal.

in my country it is not possible to buy the ip camera module, only the whole camera. The problem is that few sellers indicate which sensor and processor are inside. so it's hard to choose a camera for openipc. Here I found a tapo c110, wanted to assemble an fpv unit, and then it turned out that it does not have USB and the ability to connect an external Wi-Fi module. Also, the firmware for it is only lite or ruby ​​fpv. If you have experience in creating an fpv unit, please share it. I will also be grateful if you provide an example of cameras that may be suitable.

BRFud commented 3 days ago

Now that all the PR have been committed to support Tapo C110 with the WiFi chip marked AltoBeam 6012B I have been able to install with pre-set Wifi SSID and password simply using the following 2 commands, after connecting the CH341A programmer to each fresh unit straight out of the box:

$ sh repack.sh ssc333 ssc333_lite_tp-link-tapo-c110-v26-nor <SSID> <pass>

$ ./snander -e
SNANDer - Spi Nor/nAND programmER 1.8.0 by McMCC

Found programmer device: WinChipHead (WCH) - CH341A
Using I2C default speed mode

spi device id: 20 40 17 20 40 (40172040)
Detected SPI NOR Flash: XM25QH64C, Flash Size: 8MB
ERASE:
Set full erase chip!
Erase addr = 0x0000000000000000, len = 0x0000000000800000
Please wait...
Elapsed time: 22 seconds
Status: OK

$ ./snander -w ./openipc-ssc333-nor.bin -s
SNANDer - Spi Nor/nAND programmER 1.8.0 by McMCC

Found programmer device: WinChipHead (WCH) - CH341A
Using I2C fast speed mode

spi device id: 20 40 17 20 40 (40172040)
Detected SPI NOR Flash: XM25QH64C, Flash Size: 8MB
WRITE:
Write addr = 0x0000000000000000, len = 0x0000000000722000
Written 100% [7479296] of [7479296] bytes      
Elapsed time: 490 seconds
Status: OK

I needed to issue the first command almost immediately after powering on, and re-powering a few times until snander detected the flash chip . Flashing the main firmware from SD card as described by @geedubess above feels less likely to have errors in the flashing but it seems to have worked out fine sending the whole thing through the programmer.

geedubess commented 3 days ago

Neat! Did your board have R504 populated or not? I did try to use my ch341a without it populated but it did not work for me - but perhaps I was just unlucky. I didn't try to trace the pads to see whether it would always be connected to the nor flash.

Having access to the serial port and u-boot is handy, at least long enough to do set it up to auto-flash images. I created a file called 'uenv.txt' on a vfat-formatted SD card, and executed the top lines in u-boot. We could also build this into the u-boot image so that uart access isn't needed at all (except for debug).

# run this once so that bootcmd will try to load uenv.txt in the future:
# setenv bootcmd if fatload mmc 0:1 \${baseaddr} uEnv.txt\; then env import -t \${baseaddr} \${filesize}\; run bootcmd_once\; fi\; ${bootcmd}
# saveenv

# try to load uImage
update_uimage=mw.b ${baseaddr} 0xff 0x200000; if fatload mmc 0:1 ${baseaddr} uImage.ssc333; then sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}; else echo uImage.ssc333 not found on SD; fi

# try to load squashfs image
update_squashfs=mw.b ${baseaddr} 0xff 0x500000; if fatload mmc 0:1 ${baseaddr} rootfs.squashfs.ssc333; then sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}; sf erase 0x750000 0xb0000; else echo rootfs.squashfs.ssc333 not found on SD; fi

bootcmd_once=echo uenv bootcmd_once; run update_uimage; run update_squashfs
BRFud commented 1 day ago

@geedubess For the boards I have done, it required bridging R504 only (with solder).