DJI Phantom 2 Vision FC200 EGG camera - Black video FPV solution to fix

I’m thinking the kernel we uploaded may need some work/tweaking.
Yeah, don't use the one I posted. Use the one from O-Gs wiki - they got it from me and extracted properly.

Also, if you use u-boot with a proper memory map, it may find a working kernel - currently it searches at positions there never even was any kernel.
 
Last edited:
Yes, looks like it.. The bootloader seem to store the memory map.
So in the past, I was wrong. I am not sure if you need both of the bootloader files though, or only one.

Hi quaddamage
If only one, which one i need the ubl1_prop or the u-bootprop?

And more generally, the fact that I managed to exit the bootloop (but only with gaucho's files for now) means that we can exclude an HW failure?

Thanks
 
If only one, which one i need the ubl1_prop or the u-bootprop?
No idea in which file the memory map is.
Just to make things clear: to perform flashing, you need two files. What I ment was that you probably need only one file from FC200 bootloader, 2nd one you can replace with one from newer plaforms.

And more generally, the fact that I managed to exit the bootloop (but only with gaucho's files for now) means that we can exclude an HW failure?

Not sure if I'd exclude it, but yeah it's likely the issue was with your setup.
 
  • Like
Reactions: Mark The Droner
Still fighting...
Bootloader re-flashed with Gaucho's ubl1_prop and FC200's u-bootprop and the result is:

Linux version 2.6.32.17-davinci1 (root@ubuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #38 PREEMPT Mon Jul 22 20:12:25 PDT 2013 CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 CPU: VIVT data cache, VIVT instruction cache Machine: DaVinci DM36x EVM Memory policy: ECC disabled, Data cache writeback DaVinci dm36x_rev1.2 variant 0x8 Built 1 zonelists in Zone order, mobility grouping off. Total pages: 12192 Kernel command line: console=ttyS0,115200n8 rw dm365_imp.oper_mode=0 video=davincifb:vid0=OFF:vid1=OFF:osd0=480x272x16,4050K mem=48MB davinci_enc_mngr.ch0_output=LCD davinci_enc_mngr.ch0_mode=480x272 ubi.mtd=3,2048 root=ubi0:rootfs rootfstype=ubifs ip=192.168.1.10:192.168.1.5:192.168.1.2:255.255.255.0::eth0:off 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: 48MB = 48MB total Memory: 44164KB available (3976K code, 377K data, 140K init, 0K highmem) SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 Hierarchical RCU implementation. NR_IRQS:245 Console: colour dummy device 80x30 Calibrating delay loop... 214.36 BogoMIPS (lpj=357376) Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok DaVinci: 8 gpio irqs NET: Registered protocol family 16 ------------[ cut here ]------------ WARNING: at drivers/gpio/gpiolib.c:101 gpio_ensure_requested+0x5c/0x12c() autorequest GPIO-20 Modules linked in: Backtrace: [<c002f5ec>] (dump_backtrace+0x0/0x114) from [<c0316d98>] (dump_stack+0x18/0x1c) r7:c1027f00 r6:c01a71b8 r5:c03cab0d r4:00000065 [<c0316d80>] (dump_stack+0x0/0x1c) from [<c0040b78>] (warn_slowpath_common+0x50/0x68) [<c0040b28>] (warn_slowpath_common+0x0/0x68) from [<c0040bdc>] (warn_slowpath_fmt+0x30/0x38) r7:00000000 r6:c043b228 r5:c045a590 r4:c043b228 [<c0040bac>] (warn_slowpath_fmt+0x0/0x38) from [<c01a71b8>] (gpio_ensure_requested+0x5c/0x12c) r3:00000014 r2:c03cab24 [<c01a715c>] (gpio_ensure_requested+0x0/0x12c) from [<c01a730c>] (gpio_direction_output+0x84/0x148) r9:00000000 r8:c045a590 r7:00000001 r6:00000014 r5:40000013 r4:c043b228 [<c01a7288>] (gpio_direction_output+0x0/0x148) from [<c000ebf0>] (dm365_evm_init+0x24/0x294) [<c000ebcc>] (dm365_evm_init+0x0/0x294) from [<c000b518>] (customize_machine+0x20/0x2c) r8:00000000 r7:00000001 r6:c000b4f8 r5:00000000 r4:c0022be0 [<c000b4f8>] (customize_machine+0x0/0x2c) from [<c002b3d4>] (do_one_initcall+0x64/0x1c4) [<c002b370>] (do_one_initcall+0x0/0x1c4) from [<c0008474>] (kernel_init+0x9c/0x118) r7:00000000 r6:00000000 r5:00000000 r4:c0022be0 [<c00083d8>] (kernel_init+0x0/0x118) from [<c00440f8>] (do_exit+0x0/0x668) r5:00000000 r4:00000000 ---[ end trace 1b75b31a2719ed1c ]--- davinci_serial_init:97: failed to get UART2 clock EVM: tvp5146 SD video input bio: create slab <bio-0> at 0 DM365 IPIPE initialized in Continuous mode SCSI subsystem initialized vpss vpss: dm365_vpss vpss probed vpss vpss: dm365_vpss vpss probe success dm365_afew_hw_init ch0 default output "LCD", mode "480x272" cfg80211: Using static regulatory domain info cfg80211: Regulatory domain: US (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) (2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm) (5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) (5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) (5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) (5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm) (5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm) cfg80211: Calling CRDA for country: US LogicPD encoder initialized Switching to clocksource timer0_1 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 NET: Registered protocol family 1 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. msgmni has been set to 86 alg: No test for stdrng (krng) io scheduler noop registered io scheduler anticipatory registered (default) Console: switching to colour frame buffer device 60x34 davincifb davincifb.0: dm_osd0_fb: 480x272x16@0,0 with framebuffer size 4050KB davincifb davincifb.0: dm_vid0_fb: 0x0x16@0,0 with framebuffer size 382KB davincifb davincifb.0: dm_osd1_fb: 480x272x4@0,0 with framebuffer size 255KB davincifb davincifb.0: dm_vid1_fb: 0x0x16@0,0 with framebuffer size 382KB DM365 IPIPEIF probed imp serializer initialized davinci_previewer initialized davinci_resizer initialized Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled serial8250.0: ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A console [ttyS0] enabled brd: module loaded at24 1-0050: 32768 byte 24c256 EEPROM (writable) NAND device: Manufacturer ID: 0x2c, Chip ID: 0xf1 (Micron NAND 128MiB 3,3V 8-bit) Creating 4 MTD partitions on "davinci_nand.0": 0x000000000000-0x000000640000 : "bootloader" 0x000000640000-0x000000680000 : "params" 0x000000680000-0x000001280000 : "kernel" 0x000001280000-0x000008000000 : "filesystem2" davinci_nand davinci_nand.0: controller rev. 2.3 UBI: attaching mtd3 to ubi0 UBI: physical eraseblock size: 131072 bytes (128 KiB) UBI: logical eraseblock size: 126976 bytes UBI: smallest flash I/O unit: 2048 UBI: sub-page size: 512 UBI: VID header offset: 2048 (aligned 2048) UBI: data offset: 4096 UBI: attached mtd3 to ubi0 UBI: MTD device name: "filesystem2" UBI: MTD device size: 109 MiB UBI: number of good PEBs: 872 UBI: number of bad PEBs: 4 UBI: max. allowed volumes: 128 UBI: wear-leveling threshold: 4096 UBI: number of internal volumes: 1 UBI: number of user volumes: 1 UBI: available PEBs: 0 UBI: total number of reserved PEBs: 872 UBI: number of PEBs reserved for bad PEB handling: 8 UBI: max/mean erase counter: 27/0 UBI: image sequence number: 248044948 spi_davinci spi_davinci.0: DaVinci SPI driver in EDMA mode Using RX channel = 17 , TX channel = 16 and event queue = 3 UBI: background thread "ubi_bgt0d" started, PID 906 at25 spi0.0: 8 KByte at25640 eeprom, pagesize 32 spi_davinci spi_davinci.0: Controller at 0xfec66000 console [netcon0] enabled netconsole: network logging started mice: PS/2 mouse device common for all mice tsc2004: probe of 1-0000 failed with error -121 i2c /dev entries driver Linux video capture interface: v2.00 ths7303 1-002c: chip found @ 0x58 (DaVinci I2C adapter) UBI: scrubbed PEB 37 (LEB 0:46), data moved to PEB 384 ths7303 1-002c: ths7303 write failed ths7303: probe of 1-002c failed with error -121 vpfe_init vpfe-capture: vpss clock vpss_master enabled vpfe-capture vpfe-capture: v4l2 device registered vpfe-capture vpfe-capture: video device registered EVM: switch to tvp5146 SD video input tvp514x 1-005d: tvp514x 1-005d decoder driver registered !! vpfe-capture vpfe-capture: v4l2 sub device tvp5146 registered EVM: switch to <NULL> video input UBI error: ubi_io_read: error -74 while reading 126976 bytes from PEB 128:4096, read 126976 bytes vpfe-capture vpfe-capture: v4l2 sub device tvp7002 register fails EVM: switch to ▒}▒ video input UBI warning: ubi_eba_copy_leb: error -74 while reading data from PEB 128 ths7353 1-002e: chip found @ 0x5c (DaVinci I2C adapter) ths7353 1-002e: No platform data!! ths7353 1-002e: ths7353 write failed ths7353: probe of 1-002e failed with error -121 vpfe-capture vpfe-capture: v4l2 sub device ths7353 register fails EVM: switch to ▒}▒ video input UBI error: ubi_io_read: error -74 while reading 126976 bytes from PEB 143:4096, read 126976 bytes vpfe-capture vpfe-capture: v4l2 sub device cat6023 register fails vpfe_register_ccdc_device: DM365 ISIF DM365 ISIF is registered with vpfe. UBI warning: ubi_eba_copy_leb: error -74 while reading data from PEB 143 af major#: 251, minor# 0 AF Driver initialized aew major#: 250, minor# 0 AEW Driver initialized Trying to register davinci display video device. layer=c17fcc00,layer->video_dev=c17fcd70 Trying to register davinci display video device. layer=c17fd000,layer->video_dev=c17fd170 davinci_init:DaVinci V4L2 Display Driver V1.0 loaded watchdog watchdog: heartbeat 60 sec Advanced Linux Sound Architecture Driver Version 1.0.21. No device for DAI tlv320aic3x No device for DAI davinci-i2s asoc: tlv320aic3x <-> davinci-i2s mapping ok UBI: scrubbed PEB 0 (LEB 2147479551:1), data moved to PEB 362 ALSA device list: #0: DaVinci EVM (tlv320aic3x) TCP cubic registered NET: Registered protocol family 17 lib80211: common routines for IEEE802.11 drivers Clocks: disable unused mmcsd0 Clocks: disable unused mmcsd1 Clocks: disable unused spi1 Clocks: disable unused spi2 Clocks: disable unused spi3 Clocks: disable unused spi4 Clocks: disable unused pwm0 Clocks: disable unused pwm1 Clocks: disable unused pwm2 Clocks: disable unused pwm3 Clocks: disable unused timer1 Clocks: disable unused timer3 Clocks: disable unused usb Clocks: disable unused emac Clocks: disable unused voice_codec Clocks: disable unused rto Clocks: disable unused mjcp nnnn===0 davinci_emac_probe: using random MAC addr: fe:8e:57:cf:44:30 emac-mii: probed IP-Config: Complete: device=eth0, addr=192.168.1.10, mask=255.255.255.0, gw=192.168.1.2, host=192.168.1.10, domain=, nis-domain=(none), bootserver=192.168.1.5, rootserver=192.168.1.5, rootpath= UBIFS: recovery needed UBI: scrubbed PEB 1 (LEB 0:1), data moved to PEB 0 UBI: scrubbed PEB 359 (LEB 0:2), data moved to PEB 1 UBIFS: recovery completed UBIFS: mounted UBI device 0, volume 0, name "rootfs" UBIFS: file system size: 107929600 bytes (105400 KiB, 102 MiB, 850 LEBs) UBIFS: journal size: 5459968 bytes (5332 KiB, 5 MiB, 43 LEBs) UBIFS: media format: w4/r0 (latest is w4/r0) UBIFS: default compressor: lzo UBIFS: reserved for root: 4952683 bytes (4836 KiB) VFS: Mounted root (ubifs filesystem) on device 0:13. Freeing init memory: 140K UBI: scrubbed PEB 367 (LEB 0:248), data moved to PEB 391 UBI: scrubbed PEB 371 (LEB 0:45), data moved to PEB 367 UBI: scrubbed PEB 14 (LEB 0:24), data moved to PEB 371 UBI: scrubbed PEB 15 (LEB 0:23), data moved to PEB 360 INIT: version 2.86 booting UBI: scrubbed PEB 19 (LEB 0:27), data moved to PEB 359 UBI: scrubbed PEB 18 (LEB 0:28), data moved to PEB 358 UBI: scrubbed PEB 210 (LEB 0:214), data moved to PEB 356 UBI: scrubbed PEB 365 (LEB 0:10), data moved to PEB 355 UBI: scrubbed PEB 378 (LEB 0:16), data moved to PEB 365 UBI: scrubbed PEB 369 (LEB 0:49), data moved to PEB 378 UBI: scrubbed PEB 7 (LEB 0:15), data moved to PEB 369 ##Process /etc/init.d/rcS... UBI: scrubbed PEB 339 (LEB 0:26), data moved to PEB 354 UBI: scrubbed PEB 386 (LEB 0:29), data moved to PEB 339 UBI: scrubbed PEB 388 (LEB 0:11), data moved to PEB 386 UBI: scrubbed PEB 92 (LEB 0:100), data moved to PEB 388 mount: mount point /tmp does not exist INIT: Entering runlevel: 5 CMEMK module: built on Mar 24 2011 at 16:58:03 Reference Linux version 2.6.32 File /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm368-evm-none-linux-gnueabi/ti-linuxutils-1_2_26_01_02-r52d/linuxutils_2_26_01_02/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c allocated heap buffer 0xc7000000 of size 0x4400000 heap fallback enabled - will try heap if pool buffer is not available CMEM Range Overlaps Kernel Physical - allowing overlap CMEM phys_start (0x1000) overlaps kernel (0x80000000 -> 0x83000000) cmemk initialized IRQK module: built on Mar 24 2011 at 16:58:17 Reference Linux version 2.6.32 File /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm368-evm-none-linux-gnueabi/ti-linuxutils-1_2_26_01_02-r52d/linuxutils_2_26_01_02/packages/ti/sdo/linuxutils/irq/src/module/irqk.c irqk initialized EDMAK module: built on Mar 24 2011 at 16:58:11 Reference Linux version 2.6.32 File /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm368-evm-none-linux-gnueabi/ti-linuxutils-1_2_26_01_02-r52d/linuxutils_2_26_01_02/packages/ti/sdo/linuxutils/edma/src/module/edmak.c UBI: scrubbed PEB 5 (LEB 0:17), data moved to PEB 353 UBI: scrubbed PEB 69 (LEB 0:75), data moved to PEB 352 UBI: scrubbed PEB 86 (LEB 0:94), data moved to PEB 351 UBI: scrubbed PEB 20 (LEB 0:30), data moved to PEB 350 UBI: scrubbed PEB 30 (LEB 0:40), data moved to PEB 349 NET: Registered protocol family 10 UBI: scrubbed PEB 189 (LEB 0:194), data moved to PEB 348 UBI: scrubbed PEB 363 (LEB 0:192), data moved to PEB 347 Could not load host key: /usr/local/etc/ssh_host_ecdsa_key pdi=0 pdi=1073 Encode demo started. davinci_resizer davinci_resizer.2: RSZ_G_CONFIG:0:1:124 davinci_previewer davinci_previewer.2: ipipe_set_preview_config vpfe-capture vpfe-capture: IPIPE Chained vpfe-capture vpfe-capture: Resizer present detectVide to crEVM: switch to tvp5146 SD video input eate fd = hCapture->fd Composite input selected UBI: scrubbed PEB 370 (LEB 0:57), data moved to PEB 363 UBI: scrubbed PEB 81 (LEB 0:87), data moved to PEB 370 UBI: scrubbed PEB 368 (LEB 0:95), data moved to PEB 346 UBI: scrubbed PEB 374 (LEB 0:52), data moved to PEB 368 aaaaa2===-1 Capture input sevpfe-capture vpfe-capture: width = 320, height = 240, bpp = 1 t to Composite:5vpfe-capture vpfe-capture: adjusted width = 320, height = 240, bpp = 1, bytesperline = 320, sizeimage = 115200 vpfe-capture vpfe-capture: width = 320, height = 240, bpp = 1 vpfe-capture vpfe-capture: adjusted width = 320, height = 240, bpp = 1, bytesperline = 320, sizeimage = 115200 listening.*********video.c: semkey1: 852289 semkey1: 852292 shmkey: -1 params->maxFrameRate ==30000 Venc1.c : minNumOutBufs 2, minOutBufSize[0] 115200, minOutBufSize[1] 800 video.c: minNumOutBufs 2 osdThrFxn: process ID is 1076 *********** ctrlThrFxn: process ID is 1072 *********** ******** pid of Xorg :-1 ==-1 *********************************************************************************************************************************************************************************************************************************************************************************************************************************** pid of Xorg :1072 ==1073 *****************************************************************************************************************************************************************************************************************************************************************************video_interrupt= 0 ARM Load: 71% Video fps: 0 fps Video bit rate: 0 kbps Sound bit rate: 0 kbps Time: 00:00:02 Demo: Encode Display: D1 NTSC Video Codec: H.264 HP Resolution: 320x240 Sound Codec: N/A Sampling Freq: N/A ******************************************************* pid of Xorg :1072 ==1073 ******************************************************************************************************************************************************************************************************************************************************video_interrupt= 0 ARM Load: 8% Video fps: 0 fps Video bit rate: 0 kbps Sound bit rate: 0 kbps Time: 00:00:03 Demo: Encode Display: D1 NTSC Video Codec: H.264 HP Resolution: 320x240 Sound Codec: N/A Sampling Freq: N/A ***************************************************************************** pid of Xorg :1072 ==1073

quaddamage, what you think about?
 
  • Like
Reactions: Mark The Droner
quaddamage, what you think about?

Looks good to me.. starts Xorg, shows bit rates.
Do you mean it still doesn't work? Because it looks like it's working.

There are some errors with RootFS though:
UBI warning: ubi_eba_copy_leb: error -74 while reading data from PEB 143
Those should be all auto-corrected after a few startups.
 
Last edited:
  • Like
Reactions: Mark The Droner
Still fighting...
Bootloader re-flashed with Gaucho's ubl1_prop and FC200's u-bootprop and the result is:
comparing that to the log I posted last week of a good one it looks very close! The log you posted showed some space allocation that my log did not, but That may not matter. I think the pid stuff at the bottom is what we’re looking for. Do you have a way to test it on a rig?
my project board failed yesterday, I think I lost good BSEL connectivity (resistor popped and I dont have a trace to solder to). I’ve got a new unworking board arriving today, can’t wait to test it.
 
I cut ubl correctly, now it's booting
DM36x initialization passed!
TI UBL Version: 1.50
Booting Catalog Boot Loader
BootMode = NAND
Starting NAND Copy...
Valid magicnum, 0xA1ACED66, found in block 0x00000019.
DONE
Jumping to entry point at 0x81080000.


U-Boot 2010.12-rc2 (Sep 04 2013 - 20:37:37)

Cores: ARM 297 MHz
DDR: 243 MHz
I2C: ready
DRAM: 128 MiB
NAND: boot ==1
uboot-v1.0-uboot-block0
256 MiB (yea, I put 256 nand from p3p)
MMC: davinci: 0, davinci: 1
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
nand_read_bbt: Bad block at 0x00000e0e0000
Also, mistake on wiki in bootargs for FC200
env set bootargs 'console=ttyS0,115200n8 rw dm365_imp.oper_mode=0 video=davincifb:vid0=OFF:vid1=OFF:eek:sd0=480x272x16,4050K mem=96MB davinci_enc_mngr.ch0_output=LCD davinci_enc_mngr.ch0_mode=480x272 loglevel=8 root=/dev/mtdblock2 rootfstype=cramfs ip=192.168.1.10:192.168.1.5:192.168.2.2:255.255.255.0::eth0:eek:ff'

And kernel image not correct cutted

Loading from nand0, offset 0x980000
Image Name: Linux-2.6.32.17-davinci1
Created: 2013-07-23 3:12:28 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2118348 Bytes = 2 MiB
Load Address: 80008000
Entry Point: 80008000
Booting kernel from Legacy Image at 80700000 ...
Image Name: Linux-2.6.32.17-davinci1
Created: 2013-07-23 3:12:28 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2118348 Bytes = 2 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
This is working and tested kernel

Now I got same dmesg like popeye, and image transmission works! Thank you for dump, szupek!


And the last thing - ubifs
I use ubifs from wiki and stuck on this first time - "Warning: unable to open an initial console."
I exec "mknod console c 5 1 " in /dev via mounted ubifs on recovery image and now it's works good. Possible to add 'console' to ubifs image?
and ubiformat for fc200 looks like
ubiformat /dev/mtd3 --sub-page-size=512 --vid-hdr-offset=2048 -f sdcard/dm368_root_ubifs.ubi
 
Last edited:
Well, next weekend I should have time to reassemble my FC200 cam and try it out.

Assuming it is repaired, what should be done to prevent the problem from happening again in the future?

It had occurred to me after a DJI software update (and P2V is now obsolete so now luckily DJI will leave it alone :p ) but I have read about people who simply experienced it after a long period of inactivity...so is it necessary to periodically turn on the Phantom? Like at least once a month?
 
  • Like
Reactions: Mark The Droner
I turn the equipment on twice a year.
It decreases the chance of issue, but doesn't eliminate it.
 
I’ve been following this the best I can but I’m more hardware than software.
Is the egg camera now repairable?
 
Hello everybody,

I’m monitoring this thread since few weeks and I see the amazing progress you all did for NO FPV issue on Phantom 2 Vision ( the one with the egg camera ). Few days ago I successfully flash bootloader on my drone camera ( board #3 ) and now video feedback is working again.

Big thanks to all participants… Special thanks to @szupek for marvelous NAND dumping… Special thanks to @PriEgor for firmware/files packaging and O-Gs wiki update… Special thanks to @quaddamage for all technical explanations and accurate guidelines… Special thanks to @popeye for documenting all unsuccessful and successful tries which help me understanding the final how-to.

Here below, I’m documenting my own setup and process which can help maybe others.

(1) Disassembling the egg camera:
I was using mainly this thread --> Teardown with Pictures for Phantom Vision FC200 Camera
Additionally, you can find also few videos on YT.

Just few comments here…
+ When removing camera from first board, lift carefully the black tab before extracting smoothly the ribbon flat cable.
+ When removing second board ( power ), be careful not damaging the two tiny cables connected on front fan.

(2) Required material for diagnostics and flashing stuff:
+ You need USB-to-TTL ( aka FTDI232 adapter ) which support 5V and 3.3V.
+ You need external power supply delivering 5V. I was using smartphone USB power adaptor for this. I was primarily trying with USB-to-TTL 5V and 3.3V output but without success. To generate 3.3V from 5V USB power adapter, I just sold 3 diodes ( 1N4007 ) in serial. For more convenience, I also add one little switch in my circuit. It was helpful for multiple power on/off.

(3) Full circuit mapping/connections:
Here, we consider 3 parts…
+ USB power adapter ( 5V ) + 3 diodes ( 3.3V ) and Ground.
+ USB-to-TTL adapter with pins RXD, TXD and Ground. The USB-to-TTL should be configured for 3.3V signals.
+ The drone camera board #3 ( FC200 Live View Encoder board ).

Connections are as below…
+ Connect ( sold ) USB-to-TTL RXD on TP1,
+ Connect ( sold ) USB-to-TTL TXD on TP2,
+ Connect ( sold ) USB-to-TTL Ground on TP3,
+ Connect ( sold ) USB power ( 5V ) on TP5,
+ Connect ( sold ) USB power with serial 3 diodes ( 3.3V ) on TP8, *** But can be also with 5V as suggested by "popeye" HERE-LATER-IN-THREAD. ***
+ Connect ( sold ) USB power Ground with others ( on TP3 or on USB-to-TTL ),
+ Connect ( sold ) one additional wire on TP10 and keep the other side in the air as it will be use later to switch chip in flashing mode ( BOOTME ). No need to sold it on resistor(s).

(4) First diagnostics:
+ Connect USB-to-TTL on your computer and configure Putty ( or similar ) for serial 115200 8N1 without controls. Open Putty and wait…
+ Plug the USB power ( or switch power on ) and see on Putty for first board text output to accurate your diagnostic.

Useful lectures…
-> lightbridge firmware PROBLEM (and solution) - firmware version not found by dji assistant tool
-> PV2+ no live feed
-> DJI Phantom 2 Vision+ Plus Blank Screen Corrupt NAND fix
-> o-gs/dji-firmware-tools
-> Fixing flash in DM365 chip within Ph3 Pro gimbal
-> Fixing flash programming in DM365 chip within GL300 remote controller

In my case, the board was looping on bootloader.

(5) Switching DM3xx chip on flashing mode ( BOOTME ):
+ Unplug the USB power ( or switch power off ).
+ Connect manually wire from TP10 on first ( left ) resistor or on middle resistor ( on the side, where adjacent 4 resistors are located ). Result is same with first ( left ) or second ( middle ) resistor. You do not need to sold it… Just keeping contact while powering-up is enough. You can disconnect from BSEL pulldown resistor after power is up and as soon as you see BOOTME on Putty.
+ Close Putty and perform flashing with sfh_DM36x.exe program as documented here --> o-gs/dji-firmware-tools

Note: All required files can be found on O-Gs wiki.

After successful flashing, you can accurate your diagnostic by redoing step (4)… and so on.


Currently restoring bootloader was enough for me to get the FPV. My primary Kernel is anyway corrupted, but board works with recovery Kernel. During next weekends, I will anyway try to apply the full recovery process ( primary and recovery Kernels + UbiFS ) to validate each part posted on O-Gs wiki. I will keep you informed.

Note (***) : Last Edit on 20230114 as per "popeye" feedback.
 
Last edited:
Currently restoring bootloader was enough for me to get the FPV. My primary Kernel is anyway corrupted, but board works with recovery Kernel. During next weekends, I will anyway try to apply the full recovery process ( primary and recovery Kernels + UbiFS ) to validate each part posted on O-Gs wiki. I will keep you informed.

Fanbloodytastic result, I have about 5 failed boards that I can try this on, if it works its going to be good news for a lot of people in the UK

Thanks for all the hardwork lads
 
  • Like
Reactions: Mark The Droner
Connections are as below…
+ Connect ( sold ) USB-to-TTL RXD on TP1,
+ Connect ( sold ) USB-to-TTL TXD on TP2,
+ Connect ( sold ) USB-to-TTL Ground on TP3,
+ Connect ( sold ) USB power ( 5V ) on TP5,
+ Connect ( sold ) USB power with serial 3 diodes ( 3.3V ) on TP8,
+ Connect ( sold ) USB power Ground with others ( on TP3 or on USB-to-TTL ),
+ Connect ( sold ) one additional wire on TP10 and keep the other side in the air as it will be use later to switch chip in flashing mode ( BOOTME ). No need to sold it on resistor(s).

5V to TP5 is not necessary to re-flash the bootloader (i haved same results with and without it)
i haved my best flashing results with 5V to TP8 instead of 3V, but also with 3.3V should work fine. my final working reflash was done at 5V
 
  • Like
Reactions: Mark The Droner
Folks, let me sidetrack a bit, but do we have a recovery kernel for p2v+? I saw a primary one a few pages back, but how about the recovery one? In flashing dm365 topic on a github there is no info. I have boards with both kernel functional, so I can dump it, however I would need someone to prepare images from dumps.
 
Aargh, two boards with both kernels corrupted end up with kernel panic, thus I assume ubifs totally corrupted in each. It takes ages through serial...
 

Members online

No members online now.

Forum statistics

Threads
143,066
Messages
1,467,354
Members
104,933
Latest member
mactechnic