Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
esp32-cam [2018/12/19 23:54] – [getting a pic] yair | esp32-cam [2020/01/04 19:01] (current) – yair | ||
---|---|---|---|
Line 4: | Line 4: | ||
===== ESP32 stream camera modules | ===== ESP32 stream camera modules | ||
- | at their core this modules uses external RAM ([[#psram]] to buffer an ov2640 camera module that does jpeg at 10fps on-board. the external ram is not strictly | + | at their core this modules uses external RAM ([[#psram]] to buffer an ov2640 camera module that does jpeg at 10fps on-board. the external ram is not strictly |
+ | |||
+ | Note2: new modules in market are updated, make sure they carry [[#PSRAM]] chip | ||
note: **current [[# | note: **current [[# | ||
- | while the [[# | ||
- | modules tested\\ | + | **modules tested**\\ |
- | [[#TTGO T-Journal]] - comes with arduino support, works out of the box\\ | + | [[# |
- | [[# | + | [[#TTGO T-Journal]] - comes with arduino support, works out of the box, has a heatsink on the esp32.\\ |
- | [[# | + | [[# |
- | untested\\ | + | |
+ | **yet untested**\\ | ||
[[# | [[# | ||
[[# | [[# | ||
- | [[#TTGO T8]] | + | [[#TTGO T8]]\\ |
+ | [[# | ||
+ | |||
+ | |||
+ | ==== TTGO T-Journal-revisit | ||
+ | |||
+ | |||
+ | ==== ESP32-CAM ==== | ||
+ | {{ : | ||
+ | [[https:// | ||
+ | | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | spec gathered and formatted by [[https:// | ||
+ | interesting, | ||
+ | |||
+ | *[[https:// | ||
+ | *[[https:// | ||
+ | *[[https:// | ||
+ | |||
+ | *{{: | ||
+ | *{{ : | ||
+ | *{{ : | ||
+ | *[[http:// | ||
+ | |||
+ | === gettting it going === | ||
+ | #install esp-idf on system | ||
+ | https:// | ||
+ | |||
+ | #get esp-who repo, it will also pull submodule esp32-camera component | ||
+ | git clone --recursive https:// | ||
+ | #if you didnt pull the submodules run $ git submodule update --init | ||
+ | cd esp/ | ||
+ | |||
+ | |||
+ | # change camera module to ai-thinker in sdkconfig | ||
+ | # also change port to / | ||
+ | # | ||
+ | # Camera Pins | ||
+ | # | ||
+ | CONFIG_CAMERA_MODEL_WROVER_KIT= | ||
+ | CONFIG_CAMERA_MODEL_M5STACK_PSRAM= | ||
+ | CONFIG_CAMERA_MODEL_AI_THINKER=y | ||
+ | CONFIG_CAMERA_MODEL_CUSTOM= | ||
+ | CONFIG_ESP_FACE_DETECT_ENABLED=y | ||
+ | CONFIG_ESP_FACE_RECOGNITION_ENABLED=y | ||
+ | #now compile and flash | ||
+ | make menuconfig | ||
+ | make flash | ||
+ | |||
+ | {{: | ||
==== M5Stack ==== | ==== M5Stack ==== | ||
- | M5Stack host it's [[https:// | + | [[http:// |
M5Stack warn not to use the cam module for extended time as " | M5Stack warn not to use the cam module for extended time as " | ||
Line 81: | Line 159: | ||
*[[https:// | *[[https:// | ||
+ | ===getting image=== | ||
+ | comes with working demo code: [[https:// | ||
- | ==== ESP32-CAM ==== | + | watch their github |
- | {{ : | + | |
- | [[https:// | + | |
- | [[https:// | + | |
- | + | ||
- | + | ||
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | < | + | |
- | < | + | |
- | < | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | spec gathered and formatted by [[https:// | + | |
- | interesting, | + | |
- | + | ||
- | *[[https:// | + | |
- | *[[https:// | + | |
- | *[[https:// | + | |
- | *{{: | + | |
- | *{{ : | + | |
- | *[[http:// | + | |
- | + | ||
====esp-who==== | ====esp-who==== | ||
Line 163: | Line 202: | ||
git clone https:// | git clone https:// | ||
#(re)open arduino | #(re)open arduino | ||
- | File> | + | File> |
the TTGO is the best one. \\ | the TTGO is the best one. \\ | ||
Line 171: | Line 210: | ||
click image for the mjpeg_stream output \\ | click image for the mjpeg_stream output \\ | ||
{{: | {{: | ||
+ | |||
+ | ===getting image -arduino=== | ||
+ | git clone https:// | ||
+ | git submodule update --init --recursive | ||
+ | #Open [ARDUINO_SKETCHBOOK_DIR]/ | ||
+ | #going for File> | ||
+ | i added the pinout for the T-journal | ||
+ | |||
+ | < | ||
+ | // Select camera model | ||
+ | #define CAMERA_MODEL_TTGO_Tjournal | ||
+ | |||
+ | #elif defined(CAMERA_MODEL_TTGO_Tjournal) | ||
+ | #define PWDN_GPIO_NUM 0 | ||
+ | #define RESET_GPIO_NUM 15 | ||
+ | #define Y2_GPIO_NUM 17 | ||
+ | #define Y3_GPIO_NUM 35 | ||
+ | #define Y4_GPIO_NUM 34 | ||
+ | #define Y5_GPIO_NUM 5 | ||
+ | #define Y6_GPIO_NUM 39 | ||
+ | #define Y7_GPIO_NUM 18 | ||
+ | #define Y8_GPIO_NUM 36 | ||
+ | #define Y9_GPIO_NUM 19 | ||
+ | #define XCLK_GPIO_NUM 27 | ||
+ | #define PCLK_GPIO_NUM 21 | ||
+ | #define HREF_GPIO_NUM 26 | ||
+ | #define VSYNC_GPIO_NUM 22 | ||
+ | #define SIOD_GPIO_NUM 25 | ||
+ | #define SIOC_GPIO_NUM 23 | ||
+ | </ | ||
+ | #push G32 on upload start | ||
+ | | ||
+ | |||
+ | |||
+ | {{: | ||
==== ESP32-wrover-kit ==== | ==== ESP32-wrover-kit ==== | ||
Line 245: | Line 319: | ||
* [[https:// | * [[https:// | ||
+ | ==== getting a pic - superseded ==== | ||
+ | with help of [[https:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | TLDR: this module comes with a bootloader, but no app. and flashing one didn't get me the results i can work with ATM.\\ | ||
+ | |||
+ | [[# | ||
+ | but it couldn' | ||
+ | |||
+ | |||
+ | using [[https:// | ||
+ | arch and esf-idf are in package war. went with [[https:// | ||
+ | |||
+ | < | ||
+ | |||
+ | espfuse looks cute to probe > https:// | ||
+ | < | ||
+ | systemctl start docker | ||
+ | sudo systemctl start docker | ||
+ | echo N | sudo tee / | ||
+ | #forking my own as original had several issues | ||
+ | git clone git@github.com: | ||
+ | cd esp32env | ||
+ | make | ||
+ | make install | ||
+ | sudo cp esp32env / | ||
+ | sudo chmod a+x / | ||
+ | | ||
+ | git clone https:// | ||
+ | cd ESP32_CAMERA_QR | ||
+ | esp32env make menuconfig | ||
+ | esp32env make flash # Instead of `make flash` | ||
+ | esp32env make monitor # serial comm built in esp-idf, cute see https:// | ||
+ | </ | ||
+ | it's still not there, had to fix kernel line and massage the dockerfile. | ||
+ | |||
+ | < | ||
+ | < | ||
+ | esptool.py v2.6-beta1 | ||
+ | Flashing binaries to serial port / | ||
+ | esptool.py v2.6-beta1 | ||
+ | Serial port / | ||
+ | Traceback (most recent call last): | ||
+ | File "/ | ||
+ | _main() | ||
+ | File "/ | ||
+ | main() | ||
+ | File "/ | ||
+ | esp = chip_class(each_port, | ||
+ | File "/ | ||
+ | self._port = serial.serial_for_url(port) | ||
+ | File "/ | ||
+ | instance.open() | ||
+ | File "/ | ||
+ | raise SerialException(msg.errno, | ||
+ | serial.serialutil.SerialException: | ||
+ | / | ||
+ | </ | ||
+ | solved by this [[https:// | ||
+ | </ | ||
+ | |||
+ | then | ||
+ | < | ||
+ | < | ||
+ | esptool.py v2.6-beta1 | ||
+ | Flashing binaries to serial port / | ||
+ | esptool.py v2.6-beta1 | ||
+ | Serial port / | ||
+ | Connecting........_____....._____....._____....._____....._____....._____....._____ | ||
+ | |||
+ | A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet content | ||
+ | / | ||
+ | make: *** [flash] Error 2 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **short GP0&GP2 to ground and disconnect camera**\\ | ||
+ | **dont forget you have to reset the esp32 (btn) when you want to flash** | ||
+ | |||
+ | {{: | ||
+ | |||
+ | then disconnect GP0 and GP2 , reconnect camera, boot and... \\ | ||
+ | YAY! | ||
+ | {{: | ||
+ | |||
+ | but...\\ | ||
+ | {{: | ||
+ | |||
+ | |||
+ | to get the serial data run ([[https:// | ||
+ | esp32env make monitor | ||
+ | |||
+ | on first boot i get the following log | ||
+ | < | ||
+ | < | ||
+ | rst:0x1 (POWERON_RESET), | ||
+ | configsip: 0, SPIWP:0xee | ||
+ | clk_drv: | ||
+ | mode:DIO, clock div:2 | ||
+ | load: | ||
+ | load: | ||
+ | load: | ||
+ | load: | ||
+ | entry 0x40080330 | ||
+ | [0;32mI (28) boot: ESP-IDF v3.1.1 2nd stage bootloader[0m | ||
+ | [0;32mI (28) boot: compile time 14: | ||
+ | [0;32mI (28) boot: Enabling RNG early entropy source...[0m | ||
+ | 0;32mI (33) boot: SPI Speed : 40MHz[0m | ||
+ | [0;32mI (37) boot: SPI Mode : DIO[0m | ||
+ | [0;32mI (41) boot: SPI Flash Size : 4MB[0m | ||
+ | [0;32mI (45) boot: Partition Table:[0m | ||
+ | [0;32mI (48) boot: ## Label Usage Type ST Offset | ||
+ | [0;32mI (56) boot: 0 nvs WiFi data 01 02 00009000 00006000[0m | ||
+ | [0;32mI (63) boot: 1 phy_init | ||
+ | [0;32mI (71) boot: 2 factory | ||
+ | [0;32mI (78) boot: End of partition table[0m | ||
+ | [0;32mI (82) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x16240 ( 90688) map[0m | ||
+ | [0;32mI (123) esp_image: segment 1: paddr=0x00026268 vaddr=0x3ffb0000 size=0x034d0 ( 13520) load[0m | ||
+ | [0;32mI (128) esp_image: segment 2: paddr=0x00029740 vaddr=0x3ffb34d0 size=0x00000 ( 0) load[0m | ||
+ | [0;32mI (130) esp_image: segment 3: paddr=0x00029748 vaddr=0x40080000 size=0x00400 ( 1024) load[0m | ||
+ | [0;32mI (139) esp_image: segment 4: paddr=0x00029b50 vaddr=0x40080400 size=0x064c0 ( 25792) load[0m | ||
+ | [0;32mI (158) esp_image: segment 5: paddr=0x00030018 vaddr=0x400d0018 size=0x6e4b8 451768) map[0m | ||
+ | [0;32mI (317) esp_image: segment 6: paddr=0x0009e4d8 vaddr=0x400868c0 size=0x0ab48 ( 43848) load[0m | ||
+ | [0;32mI (335) esp_image: segment 7: paddr=0x000a9028 vaddr=0x400c0000 size=0x00000 ( 0) load[0m | ||
+ | [0;32mI (336) esp_image: segment 8: paddr=0x000a9030 vaddr=0x50000000 size=0x00000 ( 0) load[0m | ||
+ | [0;32mI (352) boot: Loaded app from partition at offset 0x10000[0m | ||
+ | [0;32mI (352) boot: Disabling RNG early entropy source...[0m | ||
+ | [0;32mI (354) cpu_start: Pro cpu up.[0m | ||
+ | [0;32mI (357) cpu_start: Starting app cpu, entry point is 0x40081034[0m | ||
+ | [0;32mI (0) cpu_start: App cpu up.[0m | ||
+ | [0;32mI (368) heap_init: Initializing. RAM available for dynamic allocation: | ||
+ | [0;32mI (375) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM[0m | ||
+ | [0;32mI (381) heap_init: At 3FFB9500 len 00026B00 (154 KiB): DRAM[0m | ||
+ | [0;32mI (387) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM[0m | ||
+ | [0;32mI (393) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM[0m | ||
+ | [0;32mI (400) hea_init: At 40091408 len 0000EBF8 (58 KiB): IRAM[0m | ||
+ | [0;32mI (406) cpu_start: Pro cpu start user code[0m | ||
+ | [0;32mI (200) cpu_start: Starting scheduler on PRO CPU.[0m | ||
+ | [0;32mI (0) cpu_start: Starting scheduler on APP CPU.[0m | ||
+ | [0;32mI (246) I2S: DMA Malloc info, datalen=blocksize=256, | ||
+ | [0;32mI (246) I2S: PLL_D2: Req RATE: 78125, real rate: 78125.000, BITS: 16, CLKM: 8, BCK: 8, MCLK: 20000000.000, | ||
+ | [0;32mI (256) camera_xclk: | ||
+ | [0;32mI (266) camera_xclk: | ||
+ | [0;32mI (4326) camera_demo: | ||
+ | [0;32mI (4546) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE[0m | ||
+ | [0;32mI (4546) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE[0m | ||
+ | [0;32mI (4636) phy: phy_version: | ||
+ | [0;32mI (4636) camera_demo: | ||
+ | [0;32mI (6546) event: sta ip: 192.168.0.93, | ||
+ | [0;32mI (6546) camera_demo: | ||
+ | [0;32mI (6546) camera_demo: | ||
+ | [0;32mI (6556) camera_demo: | ||
+ | [0;32mI (6566) camera_demo: | ||
+ | [0;32mI (6566) camera_demo: | ||
+ | [0;32mI (28746) camera: Frame 0 done in 158 ms[0m | ||
+ | [0;32mI (28906) camera: Frame 1 done in 155 ms[0m | ||
+ | [0;32mI (29066) camera: Frame 2 done in 156 ms[0m | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | trying to run esptool (the flasher) without building to faster debug, bin is here < | ||
+ | to build the app only, without the bootloader you can run (see [[https:// | ||
+ | esp32env make app-flash | ||
+ | |||
+ | first image from the moon...\\ | ||
+ | {{: | ||
+ | |||
+ | this datamush was also apprant in the ENABLE_TEST_PATTERN | ||
+ | |||
+ | ===phase2=== | ||
+ | now the image i got is pretty bad.\\ | ||
+ | im now learning the config system for [[http:// | ||
+ | esp32env vi / | ||
+ | i later used the recommended | ||
+ | esp32env make makeconfig | ||
+ | for an ncurses text editor. upped the logging to '' | ||
+ | |||
+ | {{: | ||
+ | < | ||
+ | D (211100) camera: Waiting for positive edge on VSYNC | ||
+ | D (211170) camera: Got VSYNC | ||
+ | D (211170) camera: Waiting for frame | ||
+ | </ | ||
+ | |||
+ | but hey, thats not the test pattern i was looking for | ||
+ | < | ||
+ | config ENABLE_TEST_PATTERN | ||
+ | bool " | ||
+ | default n | ||
+ | help | ||
+ | Configure the camera module to output test pattern instead of live image. | ||
+ | |||
+ | Use this option to troubleshoot image issues like noise, | ||
+ | distortion, | ||
+ | Instead, module will generate regular vertical bars | ||
+ | in shades from dark to white. | ||
+ | </ | ||
+ | < | ||
+ | I (4720) phy: phy_version: | ||
+ | D (4720) event: SYSTEM_EVENT_STA_START | ||
+ | I (4720) camera_demo: | ||
+ | D (5550) nvs: nvs_set sta.chan 1 1 | ||
+ | D (5550) nvs: nvs_set_blob sta.apinfo 700 | ||
+ | D (5550) event: SYSTEM_EVENT_STA_CONNECTED, | ||
+ | D (5550) tcpip_adapter: | ||
+ | D (5560) tcpip_adapter: | ||
+ | D (5560) tcpip_adapter: | ||
+ | D (5570) tcpip_adapter: | ||
+ | D (6970) tcpip_adapter: | ||
+ | D (6970) tcpip_adapter: | ||
+ | D (6970) event: SYSTEM_EVENT_STA_GOT_IP, | ||
+ | I (6970) event: sta ip: 192.168.0.89, | ||
+ | I (6980) camera_demo: | ||
+ | I (6980) camera_demo: | ||
+ | I (6990) camera_demo: | ||
+ | I (7000) camera_demo: | ||
+ | I (7000) camera_demo: | ||
+ | D (24580) http_server: | ||
+ | D (24580) http_server: | ||
+ | D (24580) http_server: | ||
+ | D (24580) http_server: | ||
+ | D (24590) http_server: | ||
+ | D (24600) http_server: | ||
+ | D (24610) http_server: | ||
+ | D (24620) http_server: | ||
+ | D (24630) http_server: | ||
+ | D (29630) camera: Waiting for positive edge on VSYNC | ||
+ | D (29650) camera: Got VSYNC | ||
+ | D (29650) camera: Waiting for frame | ||
+ | I (29730) camera: Frame 0 done in 108 ms | ||
+ | D (29740) camera: Waiting for positive edge on VSYNC | ||
+ | D (29810) camera: Got VSYNC | ||
+ | D (29810) camera: Waiting for frame | ||
+ | I (29890) camera: Frame 1 done in 155 ms | ||
+ | D (29900) camera: Waiting for positive edge on VSYN | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | // | ||
+ | digging some dirt on the esp32 [[https:// | ||
+ | |||
+ | ===phase 3=== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | micropython on esp32 [[https:// | ||
+ | sudo pip3 install esptool adafruit-ampy | ||
+ | esptool.py --chip esp32 -p / | ||
+ | -z 0x1000 esp32-20181215-v1.9.4-757-g39eef2708.bin | ||
+ | ampy / | ||
+ | picocom / | ||
+ | |||
+ | |||
+ | if you get [[https:// | ||
+ | #Try resetting the filesystem using: | ||
+ | import uos | ||
+ | import flashbdev | ||
+ | uos.VfsFat.mkfs(flashbdev.bdev) | ||
+ | |||
+ | |||
+ | but why bother, no i2s [[https:// | ||
+ | |||
+ | ===phase 4=== | ||
+ | so.. i gave up on the [[https:// | ||
+ | found a another projects fork that actually outputs an image\\ | ||
+ | [[https:// | ||
+ | but super slowly (1600x1200)... | ||
+ | |||
+ | {{: | ||
+ | |||
+ | revisiting ESP32_CAM_QR i went ahead and in // | ||
+ | CONFIG_SPIRAM_SUPPORT=y | ||
+ | running now | ||
+ | esp32env make app-flash | ||
+ | opened a few more options related to SPRAM | ||
+ | < | ||
+ | < | ||
+ | * SPI RAM config | ||
+ | * | ||
+ | Initialize SPI RAM when booting the ESP32 (SPIRAM_BOOT_INIT) [Y/n/?] (NEW) | ||
+ | Ignore PSRAM when not found (SPIRAM_IGNORE_NOTFOUND) [N/y/?] (NEW) | ||
+ | SPI RAM access method | ||
+ | 1. Integrate RAM into ESP32 memory map (SPIRAM_USE_MEMMAP) (NEW) | ||
+ | 2. Make RAM allocatable using heap_caps_malloc(..., | ||
+ | > 3. Make RAM allocatable using malloc() as well (SPIRAM_USE_MALLOC) (NEW) | ||
+ | choice[1-3? | ||
+ | Type of SPI RAM chip in use | ||
+ | > 1. ESP-PSRAM32 or IS25WP032 (SPIRAM_TYPE_ESPPSRAM32) (NEW) | ||
+ | choice[1]: 1 | ||
+ | Set RAM clock speed | ||
+ | > 1. 40MHz clock speed (SPIRAM_SPEED_40M) (NEW) | ||
+ | choice[1]: 1 | ||
+ | Run memory test on SPI RAM initialization (SPIRAM_MEMTEST) [Y/n/?] (NEW) | ||
+ | Enable workaround for bug in SPI RAM cache for Rev1 ESP32s (SPIRAM_CACHE_WORKAROUND) [Y/n/?] (NEW) | ||
+ | Maximum malloc() size, in bytes, to always put in internal memory (SPIRAM_MALLOC_ALWAYSINTERNAL) [16384] (NEW) | ||
+ | Try to allocate memories of WiFi and LWIP in SPIRAM firstly. If failed, allocate internal memory (WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST) [N/y/?] (NEW) | ||
+ | Reserve this amount of bytes for data that specifically needs to be in DMA or internal memory (SPIRAM_MALLOC_RESERVE_INTERNAL) [32768] (NEW) | ||
+ | Allow external memory as an argument to xTaskCreateStatic (SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY) [N/y/?] (NEW) | ||
+ | * | ||
+ | * FreeRTOS | ||
+ | * | ||
+ | Run FreeRTOS only on first core (FREERTOS_UNICORE) [N/y/?] n | ||
+ | Xtensa timer to use as the FreeRTOS tick source | ||
+ | > 1. Timer 0 (int 6, level 1) (FREERTOS_CORETIMER_0) | ||
+ | 2. Timer 1 (int 15, level 3) (FREERTOS_CORETIMER_1) | ||
+ | choice[1-2? | ||
+ | Tick rate (Hz) (FREERTOS_HZ) [100] 100 | ||
+ | Halt when an SMP-untested function is called (FREERTOS_ASSERT_ON_UNTESTED_FUNCTION) [Y/n/?] y | ||
+ | Check for stack overflow | ||
+ | 1. No checking (FREERTOS_CHECK_STACKOVERFLOW_NONE) | ||
+ | 2. Check by stack pointer value (FREERTOS_CHECK_STACKOVERFLOW_PTRVAL) | ||
+ | > 3. Check using canary bytes (FREERTOS_CHECK_STACKOVERFLOW_CANARY) | ||
+ | choice[1-3? | ||
+ | Set a debug watchpoint as a stack overflow check (FREERTOS_WATCHPOINT_END_OF_STACK) [N/y/?] n | ||
+ | Enable backtrace from interrupt to task context (FREERTOS_INTERRUPT_BACKTRACE) [Y/n/?] y | ||
+ | Number of thread local storage pointers (FREERTOS_THREAD_LOCAL_STORAGE_POINTERS) [1] 1 | ||
+ | FreeRTOS assertions | ||
+ | > 1. abort() on failed assertions (FREERTOS_ASSERT_FAIL_ABORT) | ||
+ | 2. Print and continue failed assertions (FREERTOS_ASSERT_FAIL_PRINT_CONTINUE) | ||
+ | 3. Disable FreeRTOS assertions (FREERTOS_ASSERT_DISABLE) | ||
+ | choice[1-3? | ||
+ | Idle Task stack size (FREERTOS_IDLE_TASK_STACKSIZE) [1024] 1024 | ||
+ | ISR stack size (FREERTOS_ISR_STACKSIZE) [1536] 1536 | ||
+ | Use FreeRTOS legacy hooks (FREERTOS_LEGACY_HOOKS) [N/y/?] n | ||
+ | Maximum task name length (FREERTOS_MAX_TASK_NAME_LEN) [16] 16 | ||
+ | Enable FreeRTOS static allocation API (SUPPORT_STATIC_ALLOCATION) [Y/?] y | ||
+ | Enable static task clean up hook (ENABLE_STATIC_TASK_CLEAN_UP_HOOK) [N/y/?] (NEW) | ||
+ | FreeRTOS timer task priority (TIMER_TASK_PRIORITY) [1] 1 | ||
+ | FreeRTOS timer task stack size (TIMER_TASK_STACK_DEPTH) [2048] 2048 | ||
+ | FreeRTOS timer queue length (TIMER_QUEUE_LENGTH) [10] 10 | ||
+ | FreeRTOS queue registry size (FREERTOS_QUEUE_REGISTRY_SIZE) [0] 0 | ||
+ | Enable FreeRTOS trace facility (FREERTOS_USE_TRACE_FACILITY) [N/y/?] n | ||
+ | Enable FreeRTOS to collect run time stats (FREERTOS_GENERATE_RUN_TIME_STATS) [N/y/?] n | ||
+ | # | ||
+ | # configuration written to / | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | i will copy relevant options from the tmrttmrt fork mentioned above, as best i can | ||
+ | < | ||
+ | -CONFIG_SPIRAM_SUPPORT= | ||
+ | +CONFIG_SPIRAM_SUPPORT=y | ||
+ | + | ||
+ | +# | ||
+ | +# SPI RAM config | ||
+ | +# | ||
+ | +CONFIG_SPIRAM_BOOT_INIT=y | ||
+ | +CONFIG_SPIRAM_IGNORE_NOTFOUND= | ||
+ | +CONFIG_SPIRAM_USE_MEMMAP= | ||
+ | +CONFIG_SPIRAM_USE_CAPS_ALLOC= | ||
+ | +CONFIG_SPIRAM_USE_MALLOC=y | ||
+ | +CONFIG_SPIRAM_TYPE_ESPPSRAM32=y | ||
+ | +CONFIG_SPIRAM_SIZE=4194304 | ||
+ | +CONFIG_SPIRAM_SPEED_40M=y | ||
+ | +CONFIG_SPIRAM_MEMTEST=y | ||
+ | +CONFIG_SPIRAM_CACHE_WORKAROUND=y | ||
+ | +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384 | ||
+ | +CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST= | ||
+ | +CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 | ||
+ | +CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY= | ||
+ | </ | ||
+ | |||
+ | and then start log looks like this | ||
+ | |||
+ | < | ||
+ | rst:0x1 (POWERON_RESET), | ||
+ | configsip: 0, SPIWP:0xee | ||
+ | clk_drv: | ||
+ | mode:DIO, clock div:2 | ||
+ | load: | ||
+ | load: | ||
+ | load: | ||
+ | load: | ||
+ | entry 0x40080330 | ||
+ | I (28) boot: ESP-IDF v3.1.1 2nd stage bootloader | ||
+ | I (28) boot: compile time 20:25:53 | ||
+ | I (28) boot: Enabling RNG early entropy source... | ||
+ | I (33) boot: SPI Speed : 40MHz | ||
+ | I (37) boot: SPI Mode : DIO | ||
+ | I (41) boot: SPI Flash Size : 4MB | ||
+ | I (45) boot: Partition Table: | ||
+ | I (48) boot: ## Label Usage Type ST Offset | ||
+ | I (56) boot: 0 nvs WiFi data 01 02 00009000 00006000 | ||
+ | I (63) boot: 1 phy_init | ||
+ | I (71) boot: 2 factory | ||
+ | I (78) boot: End of partition table | ||
+ | I (82) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1c0c0 (114880) map | ||
+ | I (131) esp_image: segment 1: paddr=0x0002c0e8 vaddr=0x3ffb0000 size=0x036f8 ( 14072) load | ||
+ | I (137) esp_image: segment 2: paddr=0x0002f7e8 vaddr=0x3ffb36f8 size=0x00000 ( 0) load | ||
+ | I (138) esp_image: segment 3: paddr=0x0002f7f0 vaddr=0x40080000 size=0x00400 ( 1024) load | ||
+ | I (148) esp_image: segment 4: paddr=0x0002fbf8 vaddr=0x40080400 size=0x00418 ( 1048) load | ||
+ | I (157) esp_image: segment 5: paddr=0x00030018 vaddr=0x400d0018 size=0x77ea8 (491176) map | ||
+ | I (337) esp_image: segment 6: paddr=0x000a7ec8 vaddr=0x40080818 size=0x15b30 ( 88880) load | ||
+ | I (374) esp_image: segment 7: paddr=0x000bda00 vaddr=0x400c0000 size=0x00000 ( 0) load | ||
+ | I (374) esp_image: segment 8: paddr=0x000bda08 vaddr=0x50000000 size=0x00000 ( 0) load | ||
+ | I (394) boot: Loaded app from partition at offset 0x10000 | ||
+ | I (394) boot: Disabling RNG early entropy source... | ||
+ | I (396) spiram: SPI RAM mode: flash 40m sram 40m | ||
+ | I (400) spiram: PSRAM initialized, | ||
+ | I (407) cpu_start: Pro cpu up. | ||
+ | I (411) cpu_start: Starting app cpu, entry point is 0x4008136c | ||
+ | I (0) cpu_start: App cpu up. | ||
+ | I (1310) spiram: SPI SRAM memory test OK | ||
+ | I (1311) heap_init: Initializing. RAM available for dynamic allocation: | ||
+ | D (1311) heap_init: New heap initialised at 0x3ffae6e0 | ||
+ | I (1316) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM | ||
+ | D (1322) heap_init: New heap initialised at 0x3ffb97b0 | ||
+ | I (1327) heap_init: At 3FFB97B0 len 00026850 (154 KiB): DRAM | ||
+ | I (1334) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM | ||
+ | I (1340) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM | ||
+ | D (1347) heap_init: New heap initialised at 0x40096348 | ||
+ | I (1352) heap_init: At 40096348 len 00009CB8 (39 KiB): IRAM | ||
+ | I (1358) cpu_start: Pro cpu start user code | ||
+ | I (1363) spiram: Adding pool of 4096K of external SPI memory to heap allocator | ||
+ | I (1371) spiram: Reserving pool of 32K of internal memory for DMA/ | ||
+ | D (1387) clk: RTC_SLOW_CLK calibration value: 3185024 | ||
+ | D (54) intr_alloc: Connected src 46 to int 2 (cpu 0) | ||
+ | D (55) intr_alloc: Connected src 57 to int 3 (cpu 0) | ||
+ | D (55) intr_alloc: Connected src 24 to int 9 (cpu 0) | ||
+ | I (60) cpu_start: Starting scheduler on PRO CPU. | ||
+ | D (0) intr_alloc: Connected src 25 to int 2 (cpu 1) | ||
+ | I (0) cpu_start: Starting scheduler on APP CPU. | ||
+ | D (75) heap_init: New heap initialised at 0x3ffe0440 | ||
+ | D (85) heap_init: New heap initialised at 0x3ffe4350 | ||
+ | D (95) nvs: nvs_flash_init_custom partition=nvs start=9 count=6 | ||
+ | D (105) camera: Enabling XCLK output | ||
+ | D (105) intr_alloc: Connected src 33 to int 12 (cpu 0) | ||
+ | D (105) I2S: Addr[0] = 1073471164 | ||
+ | D (115) I2S: Addr[1] = 1073471424 | ||
+ | D (115) I2S: Addr[2] = 1073471684 | ||
+ | D (115) I2S: Addr[3] = 1073471944 | ||
+ | D (125) I2S: Addr[4] = 1073472204 | ||
+ | D (125) I2S: Addr[5] = 1073472464 | ||
+ | D (125) I2S: Addr[6] = 1073472724 | ||
+ | D (135) I2S: Addr[7] = 1073472984 | ||
+ | I (135) I2S: DMA Malloc info, datalen=blocksize=256, | ||
+ | I (145) I2S: PLL_D2: Req RATE: 78125, real rate: 78125.000, BITS: 16, CLKM: 8, BCK: 8, MCLK: 20000000.000, | ||
+ | D (155) I2S: data: out 189, in: -1, ws: 26, bck: 24 | ||
+ | I (165) camera_xclk: | ||
+ | I (165) camera_xclk: | ||
+ | D (165) camera: Initializing SSCB | ||
+ | D (175) camera: Resetting camera | ||
+ | D (4175) camera: Searching for camera address | ||
+ | D (4185) camera: Detected camera at address=0x30 | ||
+ | D (4195) camera: Camera PID=0x26 VER=0x42 MIDL=0x7f MIDH=0xa2 | ||
+ | D (4195) camera: Doing SW reset of sensor | ||
+ | I (4235) camera_demo: | ||
+ | D (4265) camera: Setting frame size to 160x120 | ||
+ | D (4325) camera: Test pattern enabled | ||
+ | D (4325) camera: in_bpp: 2, fb_bpp: 2, fb_size: 3840, mode: 0, width: 160 height: 120 | ||
+ | D (4325) camera: Allocating frame buffer (3840 bytes) | ||
+ | D (4325) camera: Initializing I2S and DMA | ||
+ | D (4335) intr_alloc: Connected src 32 to int 13 (cpu 0) | ||
+ | D (4335) camera: Line width (for DMA): 1280 bytes | ||
+ | D (4345) camera: DMA buffer size: 1280, DMA buffers per line: 1 | ||
+ | D (4345) camera: DMA buffer count: 4 | ||
+ | D (4355) camera: Allocating DMA buffer #0, size=1280 | ||
+ | D (4355) camera: Allocating DMA buffer #1, size=1280 | ||
+ | D (4365) camera: Allocating DMA buffer #2, size=1280 | ||
+ | D (4365) camera: Allocating DMA buffer #3, size=1280 | ||
+ | D (4375) camera: Initializing GPIO interrupts | ||
+ | D (4375) intr_alloc: Connected src 22 to int 17 (cpu 0) | ||
+ | D (4455) camera: Init done | ||
+ | D (4455) nvs: nvs_open_from_partition misc 1 | ||
+ | D (4455) nvs: nvs_get_str_or_blob log | ||
+ | I (4455) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE | ||
+ | I (4465) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE | ||
+ | D (4475) nvs: nvs_open_from_partition nvs.net80211 1 | ||
+ | D (4475) nvs: nvs_get opmode 1 | ||
+ | D (4475) nvs: nvs_get_str_or_blob sta.ssid | ||
+ | D (4485) nvs: nvs_get_str_or_blob sta.mac | ||
+ | D (4485) nvs: nvs_get sta.authmode 1 | ||
+ | D (4495) nvs: nvs_get_str_or_blob sta.pswd | ||
+ | D (4495) nvs: nvs_get_str_or_blob sta.pmk | ||
+ | D (4495) nvs: nvs_get sta.chan 1 | ||
+ | D (4505) nvs: nvs_get auto.conn 1 | ||
+ | D (4505) nvs: nvs_get bssid.set 1 | ||
+ | D (4505) nvs: nvs_get_str_or_blob sta.bssid | ||
+ | D (4515) nvs: nvs_get sta.lis_intval 2 | ||
+ | D (4515) nvs: nvs_get sta.phym 1 | ||
+ | D (4525) nvs: nvs_get sta.phybw 1 | ||
+ | D (4525) nvs: nvs_get_str_or_blob sta.apsw | ||
+ | D (4525) nvs: nvs_get_str_or_blob sta.apinfo | ||
+ | D (4535) nvs: nvs_get sta.scan_method 1 | ||
+ | D (4535) nvs: nvs_get sta.sort_method 1 | ||
+ | D (4545) nvs: nvs_get sta.minrssi 1 | ||
+ | D (4545) nvs: nvs_get sta.minauth 1 | ||
+ | D (4545) nvs: nvs_get_str_or_blob ap.ssid | ||
+ | D (4555) nvs: nvs_get_str_or_blob ap.mac | ||
+ | D (4555) nvs: nvs_get_str_or_blob ap.passwd | ||
+ | D (4565) nvs: nvs_get_str_or_blob ap.pmk | ||
+ | D (4565) nvs: nvs_get ap.chan 1 | ||
+ | D (4565) nvs: nvs_get ap.authmode 1 | ||
+ | D (4575) nvs: nvs_get ap.hidden 1 | ||
+ | D (4575) nvs: nvs_get ap.max.conn 1 | ||
+ | D (4575) nvs: nvs_get bcn.interval 2 | ||
+ | D (4585) nvs: nvs_get ap.phym 1 | ||
+ | D (4585) nvs: nvs_get ap.phybw 1 | ||
+ | D (4585) nvs: nvs_get ap.sndchan 1 | ||
+ | D (4595) nvs: nvs_get lorate 1 | ||
+ | D (4595) nvs: nvs_set_blob sta.mac 6 | ||
+ | D (4595) nvs: nvs_set_blob ap.mac 6 | ||
+ | D (4605) nvs: nvs_set_blob sta.ssid 36 | ||
+ | D (4605) nvs: nvs_set_blob sta.pswd 65 | ||
+ | D (4615) nvs: nvs_set bssid.set 1 0 | ||
+ | D (4615) nvs: nvs_set sta.lis_intval 2 3 | ||
+ | D (4615) nvs: nvs_set sta.scan_method 1 0 | ||
+ | D (4625) nvs: nvs_set sta.sort_method 1 0 | ||
+ | D (4625) nvs: nvs_set sta.minrssi 1 -127 | ||
+ | D (4625) nvs: nvs_set sta.minauth 1 0 | ||
+ | D (4635) nvs: nvs_set_blob sta.apsw 2 | ||
+ | D (4635) nvs: nvs_set_blob sta.apinfo 700 | ||
+ | D (4645) RTC_MODULE: Wi-Fi takes adc2 lock. | ||
+ | D (4645) phy_init: loading PHY init data from application binary | ||
+ | D (4645) nvs: nvs_open_from_partition phy 0 | ||
+ | D (4655) nvs: nvs_get cal_version 4 | ||
+ | D (4655) nvs: nvs_get_str_or_blob cal_mac | ||
+ | D (4655) nvs: nvs_get_str_or_blob cal_data | ||
+ | D (4665) nvs: nvs_close 3 | ||
+ | I (4745) phy: phy_version: | ||
+ | D (4745) event: SYSTEM_EVENT_STA_START | ||
+ | I (4745) camera_demo: | ||
+ | D (5715) nvs: nvs_set sta.chan 1 1 | ||
+ | D (5715) nvs: nvs_set_blob sta.apinfo 700 | ||
+ | D (5715) event: SYSTEM_EVENT_STA_CONNECTED, | ||
+ | D (5715) tcpip_adapter: | ||
+ | D (5725) tcpip_adapter: | ||
+ | D (5725) tcpip_adapter: | ||
+ | D (5735) tcpip_adapter: | ||
+ | D (6985) tcpip_adapter: | ||
+ | D (6985) tcpip_adapter: | ||
+ | D (6985) event: SYSTEM_EVENT_STA_GOT_IP, | ||
+ | I (6985) event: sta ip: 192.168.0.89, | ||
+ | I (6995) camera_demo: | ||
+ | I (6995) camera_demo: | ||
+ | I (7005) camera_demo: | ||
+ | I (7015) camera_demo: | ||
+ | I (7025) camera_demo: | ||
+ | |||
+ | </ | ||
+ | still debug doesnt look as expected (lines), and disabling its still shit... | ||
+ | |||
+ | back to ttmmtt fork, now with a change at app_main.c | ||
+ | #define CAMERA_FRAME_SIZE CAMERA_FS_QQVGA // | ||
+ | |||
+ | {{: | ||
+ | |||
+ | i suspect the slow framerate (0.05fps) and finkness is just there.\\ | ||
+ | // ESP8266 was winXP, ESP32 is windows vista!// | ||
+ | |||
+ | === phase#5 === | ||
+ | now i found [[https:// | ||
+ | it needs an SPRAM board so i will return to the [[# | ||
+ | this one needs more work to adapt to my virtual dev environment (esp32env), as in\\ | ||
+ | |||
+ | clone the hello-world example | ||
+ | mkdir -p ~/ | ||
+ | cp / | ||
+ | add the repo to it | ||
+ | cd ~/ | ||
+ | git clone https:// | ||
+ | compile/ | ||
+ | esp32env make menuconfig | ||
+ | esp32env make -j4 all | ||
+ | esp32env make -j4 flash | ||
+ | |||
+ | fuck this shit, [[https:// | ||
+ | but.... still not fully backed. | ||
+ | |||
+ | trying a fork of esp32-camera by M5 Stack didn't result in much , [[https:// | ||
+ | |||
+ | error | ||
+ | I (102) camera: Searching for camera address | ||
+ | E (112) camera: Camera probe failed with error 0x20001 | ||
+ | E (112) camera: Camera Init Failed | ||
+ | full boot log | ||
+ | < | ||
+ | rst:0x1 (POWERON_RESET), | ||
+ | configsip: 0, SPIWP:0xee | ||
+ | clk_drv: | ||
+ | mode:DIO, clock div:2 | ||
+ | load: | ||
+ | load: | ||
+ | load: | ||
+ | load: | ||
+ | entry 0x40080728 | ||
+ | I (28) boot: ESP-IDF v3.3-beta1-44-gda2116f55 2nd stage bootloader | ||
+ | I (28) boot: compile time 22:57:44 | ||
+ | I (28) boot: Enabling RNG early entropy source... | ||
+ | I (34) boot: SPI Speed : 40MHz | ||
+ | I (38) boot: SPI Mode : DIO | ||
+ | I (42) boot: SPI Flash Size : 4MB | ||
+ | I (47) boot: Partition Table: | ||
+ | I (50) boot: ## Label Usage Type ST Offset | ||
+ | I (57) boot: 0 nvs WiFi data 01 02 00009000 00006000 | ||
+ | I (65) boot: 1 phy_init | ||
+ | I (72) boot: 2 factory | ||
+ | I (80) boot: End of partition table | ||
+ | I (84) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x1b5dc (112092) map | ||
+ | I (132) esp_image: segment 1: paddr=0x0002b604 vaddr=0x3ff80000 size=0x00000 ( 0) load | ||
+ | I (132) esp_image: segment 2: paddr=0x0002b60c vaddr=0x3ff80000 size=0x00000 ( 0) load | ||
+ | I (139) esp_image: segment 3: paddr=0x0002b614 vaddr=0x3ffb0000 size=0x03088 ( 12424) load | ||
+ | I (152) esp_image: segment 4: paddr=0x0002e6a4 vaddr=0x3ffb3088 size=0x00000 ( 0) load | ||
+ | I (156) esp_image: segment 5: paddr=0x0002e6ac vaddr=0x40080000 size=0x00400 ( 1024) load | ||
+ | 0x40080000: _WindowOverflow4 at / | ||
+ | |||
+ | I (166) esp_image: segment 6: paddr=0x0002eab4 vaddr=0x40080400 size=0x0155c ( 5468) load | ||
+ | I (176) esp_image: segment 7: paddr=0x00030018 vaddr=0x400d0018 size=0x72208 (467464) map | ||
+ | 0x400d0018: _stext at ??:? | ||
+ | |||
+ | I (345) esp_image: segment 8: paddr=0x000a2228 vaddr=0x4008195c size=0x13558 ( 79192) load | ||
+ | 0x4008195c: timer_list_unlock at / | ||
+ | |||
+ | I (376) esp_image: segment 9: paddr=0x000b5788 vaddr=0x400c0000 size=0x00000 ( 0) load | ||
+ | I (377) esp_image: segment 10: paddr=0x000b5790 vaddr=0x50000000 size=0x00000 ( 0) load | ||
+ | I (383) esp_image: segment 11: paddr=0x000b5798 vaddr=0x50000000 size=0x00000 ( 0) load | ||
+ | I (404) boot: Loaded app from partition at offset 0x10000 | ||
+ | I (404) boot: Disabling RNG early entropy source... | ||
+ | I (407) spiram: Found 64MBit SPI RAM device | ||
+ | I (411) spiram: SPI RAM mode: flash 40m sram 40m | ||
+ | I (416) spiram: PSRAM initialized, | ||
+ | I (423) cpu_start: Pro cpu up. | ||
+ | I (427) cpu_start: Application information: | ||
+ | I (432) cpu_start: Project name: | ||
+ | I (437) cpu_start: App version: | ||
+ | I (442) cpu_start: Compile time: | ||
+ | I (447) cpu_start: Compile date: Dec 17 2018 | ||
+ | I (453) cpu_start: ESP-IDF: | ||
+ | I (459) cpu_start: Starting app cpu, entry point is 0x400812f4 | ||
+ | 0x400812f4: call_start_cpu1 at / | ||
+ | |||
+ | I (0) cpu_start: App cpu up. | ||
+ | I (1325) spiram: SPI SRAM memory test OK | ||
+ | I (1325) heap_init: Initializing. RAM available for dynamic allocation: | ||
+ | I (1325) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM | ||
+ | I (1331) heap_init: At 3FFBB068 len 00024F98 (147 KiB): DRAM | ||
+ | I (1338) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM | ||
+ | I (1344) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM | ||
+ | I (1351) heap_init: At 40094EB4 len 0000B14C (44 KiB): IRAM | ||
+ | I (1357) cpu_start: Pro cpu start user code | ||
+ | I (1362) spiram: Adding pool of 4096K of external SPI memory to heap allocator | ||
+ | I (41) cpu_start: Starting scheduler on PRO CPU. | ||
+ | I (0) cpu_start: Starting scheduler on APP CPU. | ||
+ | I (42) spiram: Reserving pool of 32K of internal memory for DMA/ | ||
+ | I (82) camera: Enabling XCLK output | ||
+ | I (82) camera: Initializing SSCB | ||
+ | I (82) camera: Resetting camera | ||
+ | I (102) camera: Searching for camera address | ||
+ | E (112) camera: Camera probe failed with error 0x20001 | ||
+ | E (112) camera: Camera Init Failed | ||
+ | I (152) wifi: wifi driver task: 3ffca96c, prio:23, stack:3584, core=0 | ||
+ | I (152) wifi: wifi firmware version: 328353e | ||
+ | I (152) wifi: config NVS flash: enabled | ||
+ | I (162) wifi: config nano formating: disabled | ||
+ | I (162) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE | ||
+ | I (172) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE | ||
+ | I (192) wifi: Init dynamic tx buffer num: 32 | ||
+ | I (192) wifi: Init data frame dynamic rx buffer num: 32 | ||
+ | I (192) wifi: Init management frame dynamic rx buffer num: 32 | ||
+ | I (202) wifi: Init static tx buffer num: 16 | ||
+ | I (202) wifi: Init static rx buffer size: 1600 | ||
+ | I (212) wifi: Init static rx buffer num: 10 | ||
+ | I (212) wifi: Init dynamic rx buffer num: 32 | ||
+ | I (302) phy: phy_version: | ||
+ | I (302) wifi: mode : sta (24: | ||
+ | I (302) camera: wifi_init_sta finished. | ||
+ | I (302) camera: connect to ap SSID: | ||
+ | I (422) wifi: new:< | ||
+ | I (1112) wifi: state: init -> auth (b0) | ||
+ | I (1112) wifi: state: auth -> assoc (0) | ||
+ | I (1122) wifi: state: assoc -> run (10) | ||
+ | I (1132) wifi: connected with tomato-2.4GHz, | ||
+ | I (1142) wifi: pm start, type: 1 | ||
+ | I (2612) event: sta ip: 192.168.0.89, | ||
+ | I (2612) camera: got ip: | ||
+ | </ |