noahwilliamsson / dji-phantom-vision Goto Github PK
View Code? Open in Web Editor NEWDecoding DJI Phantom 2 Vision ser2net communication
License: BSD 2-Clause "Simplified" License
Decoding DJI Phantom 2 Vision ser2net communication
License: BSD 2-Clause "Simplified" License
Fantastic work so far!
I found something a few weeks ago, but don't have the experience to really vet it out. ser2net allows two connections to a serial port - one 'raw' data connection (2001, as you know), and one telnet port. The telnet port is configured as 3011.
When you telnet to 3011, you get some interesting output that seems quite similar to the message packets, although after looking through your C library, seems like it's the 0xFF error state. I'm curious if there is some way of obtaining useful data from here, though.. perhaps sending some sort of ack packet? (Dunno if the raw stream connection does that - we'd have to sniff the traffic from right before the Vision app connects)
My essential goal here is to be able to write some sort of program/library that can obtain data real-time from the Phantom with a second device (initially a computer), while allowing the phone/tablet-based Vision app to operate normally and uninterrupted.
Thoughts?
Here's the output from my brief test:
λ telnet 192.168.1.2 3011 Trying 192.168.1.2... Connected to 192.168.1.2. Escape character is '^]'. this is ser2net TCP port 3011 device /dev/ttyS0 second line third line 55BB07043897FF 55BB07043883FF 55BB07043887FF 55BB07043897FF ? B?NBBB?NB? B?NB?HB?B?NBB?NB?JB?B?JBB?NB?NB?B?JB?
Hi,
I thought this might be relevant as you're struggling with the checksums,
I've just started trying to decompile the android DJI Vision app, and it has a precompiled library that it uses for the ground functions called libGroundStation.so
It exports the following checksum-related functions:
jVerifyChecksumCrc16(_JNIEnv _,_jobject *,_jbyteArray *)
DjiVerifyChecksumCrc16
jCalcChecksumCrc16(_JNIEnv *,_jobject *,_jbyteArray *,int)
DjiCalcChecksumCrc16
jVerifyChecksumCrc8(_JNIEnv *,_jobject *,_jbyteArray *)
DjiVerifyChecksumCrc8
jCalcChecksumCrc8(_JNIEnv *,_jobject *,_jbyteArray *)
DjiCalcChecksumCrc8
jcheckCRCForData(_JNIEnv *,_jobject *,_jbyteArray *)
checkCRCForData(uchar *,int)
jgetCRCFromData(_JNIEnv *,_jobject *,_jbyteArray *)
getCRCFromData(uchar *,uchar *,int)
jdecodeData(_JNIEnv *,_jobject *,_jbyteArray *)
decodeData(uchar *,int)
jencodeData(_JNIEnv *,_jobject *,_jbyteArray *)
encodeData(uchar ,int)
jniRegisterNativeMethods(JNIEnv *,char const,JNINativeMethod const,int)
__udivsi3
tea_encrypt
tea_decrpyt <- their mistake, not mine
key_tea
Get_CRC16_Check_Sum
wCRC_Table
Verify_CRC16_Check_Sum
CRC_INIT
Append_CRC16_Check_Sum
gs_cal_crc
gs_get_crc
DjiCalcChecksumXor8
DjiCalcChecksumXor32
DjiCrc8Table
DjiAppendChecksumCrc8
DjiCrc16Table
DjiAppendChecksumCrc16
I thought that might be helpful!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.