Problems with connecting Raspberry Pi successfully to M100 through serial port - dji-sdk

Currently I am trying to mount a raspberry pi 3 as my onboard device onto my M100. I am connecting my pi by connecting the UART_CAN2 port to the GND, TXD, and RXD pins of my pi with the provided UART serial cable. I am using the 3.1 branch of the SDK provided by DJI on Github, which is compatible with the M100. When I try to execute djiosdk-linux-sample from my build directory, this comes up:
User Configuration read successfully.
These are your User_Config settings.
Serial port = /dev/ttyS0
Baudrate = 115200
Drone/FC Version: M100
SDK Version: 3.1
App ID: MY_APP_ID_XXXXXXX
App Key: MY_APP_KEY_XXXXXXXXXXXXXXXXXXXXXXX
Does everything look correct? If not, navigate to Linux/UserConfig.txt and make changes.
STATUS init,line 51: Attempting to open device /dev/ttyS0 with baudrate 115200...
STATUS init,line 60: ...Serial started successfully.
Attempting activation..
Automatic activation successful.
Failed to obtain control.
Your RC mode switch is not in mode F. (Is the RC connected and paired?)
This program will exit now.
I am aware that this question has been asked before, but I haven't found any compelling answers. My remote is on mode F, and it is recognized as so on the Assistant application. However, I know that is not the problem. I have heard from other people online (https://github.com/dji-sdk/Onboard-SDK/issues/77), that the remote controller and its mode is not the core of the problem. Does anyone know how to resolve this? Any help would be great.
Thanks,
AWATHIEU

Related

Using Putty to connect to a Cisco 4010 via built in usb port results in error 1450. Using windows 10 build 19044

I'm attempting to connect to a Cisco 4010 network switch via it's built in usb port (which internally is a usb to rs232 adapter wired to the back of the console port).
I have installed the Cisco usb console drivers version 3.1
When I plug into the usb port, the little green LED that indicates that the console port has switched to usb does not light up.
When I run putty, and attempt to connect via serial connection to COM16 (the usb to rs232 in the cisco switch) I get:
Unable to open connection to COM16
Opening '\.\COM16': Error 1450: Insufficient System resources exist to complete the requested service.
I have tried reinstalling the drivers to no effect.
I have 3 identical switches, which give me identical behaviour, all 3 new out of the box with no programming.
Changing the Baud rate makes no difference, not that I'm expecting it to as the issue seems to be COM16 doesn't exist or similar
Putty Settings and Device Manager
With the help of a colleague, we narrowed the issue down to windows using a default usb to rs232 driver rather than the cisco one I had installed. The big clue came when I tried using putty inside a VM and it worked, while on the host OS I was still getting error 1450.
We had to compeletely uninstall all drivers, reboot, reinstall drivers manually, reboot, then attempt the usb connection again.
The last comment here describes it:
https://community.cisco.com/t5/cisco-software-discussions/usb-console-cable/td-p/3952600
I will copy the solution across to here, for easier search of the solution for the next person who has the same issue.
For WIn10 , install the setup(x64).exe from the Cisco_usbconsole_driver_3_1.zip.
Check that the Cisco Serial (Comx) is using the correct driver provider which should be Cisco. Don't use the Cypress driver.
Device Manager
To update the driver,
If you installed it already and having issues, uninstall it using the setup(x64),exe then reboot PC.
Uninstall Cisco Driver
First, disconnect the blue Cisco USB console cable. Reinstall the Cisco USB console drive using setup(x64).exe from the Windows_64 folder which was extracted from file Cisco_usbconsole_driver_3_1.zip.
Reboot PC
Open device manager to observe the driver installation. Check that you see "Cisco USB to Serial Adapter". If you don't see it repeat the above steps.
if you see above "Cisco USB to Serial Adapter". then
Update Driver
Click UPDATE DRIVER, then Browse my computer for driver software.
Choose " Let me pick from a list of available driers on my Computer." Select "Cisco Serial".
Pick driver
Finally,. connect to the COM port x indicated in the Device Manager, Ports (COM & LPT) , Cisco Serial (COMx)

M300 OSDK - drone version not obtained

Since I cannot get the manifold 2 in my region, I created a cable according to https://forum.dji.com/forum.php?mod=viewthread&tid=219723.
The cable is connected via FTDI converter directly to the drone's OSDK port.
when connected to a serial terminal application I get data from the drone
Terminal
When I try to debug the flightcontrol-sample in Linux, I get the following:
LinuxOutput
Data is also received in Linux using 'screen' command.
testing the cable for 'loopback' works fine.
I have changed the port baud rate to several options (230400 & 921600) to no avail.
the ACM cable is connected through an additional USB port to the drone's port directly.
Am I missing some HW components in my setup?
I have entered all the relevant Linux commands to get the required permissions as advised in
https://developer.dji.com/onboard-sdk/documentation/quickstart/development-environment.html
&
https://developer.dji.com/onboard-sdk/documentation/quickstart/run-the-sample.html
Am I missing something in that department?
The final goal is to use STM32 as FC, but testing is easier using the Linux environment.
Any additional things I can test?
Are there other working setup designs I can try?
Thanks for your help.
i got M300 osdk connection up at Apr 2020.
So far not many issues. There are many tricks and rules that you need to follows e.g osdk adapter board usb type C seam side face inside. make sure osdk adapter board is powered up by checking the output supply voltage. 3.3V FTDI. and make sure it is pull up properly by checking voltage as well
After you check through the hardware.
the software has many tricks as well. for M300 only osdk/osdkros 4.0 and above can drive. The new userconfig.txt format changed and you have to change accordingly. and you can go through my checklist which I posted on DJI forum https://forum.dji.com/forum.php?mod=viewthread&tid=216529
If you really still have a problem. do provide photos on your connection, the terminal output for the error message.
As Dr. Yuan suggested, have a look at the UserConfig.txt file. Depending on which OSDK version you are using, it has a different format.
In my case, using osdk 3.9 configuring it this way solved my issues:
app_id : xxx (number)
app_key : xxx (number)
device : /dev/ttyUSB0
baudrate : 230400
Also check your FTDI cable, it once burned out for me and it was the reason for this error too. You should try a new one just in case.
I use the OSDK with a raspberry pi, in case you are using this kind of linux environment, I suggest you check the configuration files (cmdline.txt and config.txt) doing sudo nano /boot/cmdline.txt and same for config.txt.
my configuration for cmdline.txt is:
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
And for config.txt just add this at the end:
enable_uart=1
init_uart_clock=64000000
start_x=1
I hope these can help and that I am not too late.

Cannot open COM port on ESP32 device. Using Windows10 and MPFShell

I can open my ESP32 Vroom32 device made by Espressif with a cp2101 chip on Ubuntu. I used Ubuntu to flash Micropython onto it, however when I try to connect with Putty, MPFshell or anything else on Windows 10 it will not work. I downloaded and installed the recommended drivers for it and also updated Windows which was supposed to load the driver as well. I can see the device and COM port in device manager but when I attempt to connect I get blocked. For example on MPFshell I get the message "Cannot connect to COM17"
It is a common reason for boards to show the "Cannot Connect to COM" error because of a bad USB cable.
Always check with another cable first, before getting deeper to the problem.

DJI A3 Onboard SDK problem (No connection)

I have a DJI S900 with A3 controller. I established the API connection between the Raspberry Pi and the drone. Until last week everything has been perfect, but now, I am taking the error shown below (I am running the telemetry example).
There is no problem related to the serial cable and Raspberry Pi. Also, SDK is enabled, and API settings are correct. I reset the controller and upgraded it. However, I have the same error. Also, I tried many times turning everything off and back on again before upgrading the controller.
A3 firmware = V1.7.7.0,
OSDK = 3.8.1,
Raspberry Pi operating system = Rasbian,
Lightbridge 2 = 1.1.40
Read App ID
User Configuration read successfully.
STATUS/1 # init, L55: Attempting to open device /dev/serial0 with
baudrate 230400...
STATUS/1 # init, L65: ...Serial started successfully.
ERRORLOG/1 # getDroneVersion, L1418: Drone version not obtained! Please
do not proceed.
Possible reasons:
Serial port connection:
* SDK is not enabled, please check DJI Assistant2 -> SDK ->
[v] Enable API Control.
* Baudrate is not correct, please double-check from DJI
Assistant2 -> SDK -> baudrate.
* TX and RX pins are inverted.
* Serial port is occupied by another program.
* Permission required. Please do 'sudo usermod -a -G dialout
$USER' (you do not need to replace $USER with your username). Then logout
and login again
ERRORLOG/1 # activate, L1302: Unable to initialize some vehicle
components!
STATUS/1 # getErrorCodeMessage, L656: initVehicle
STATUS/1 # getCommonErrorCodeMessage, L722: ACK_NO_RESPONSE_ERROR
Vehicle not initialized, exiting.
Information you have given is not enough, there could be many possibilities. Please go through with the following checklist (this is what first comes to my mind, if I remember sth new, I`ll add it in)
The list is meant for error such as Drone version not obtained or new device error or first success connection(get firmware) then failed activation for Both DJI OSDK and DJI OSDK-ROS
Does UART on RPI is enabled? if not, enable it. Are you using the correct serial ID as well? If not, set it right. Recommend using /dev/serial/by-id/usb-XXX method
Does Baud rate in DJI assisatnt2 is same as the one in the USERCONFIG file of OSDK? if not, make it same
Did u give permission to the serial device e.g sudo chmod a+rw or sudo usermod -a -G dialout $USER or set the udev rule . If not choose a way to get it right.
FTDI series problems
4.1 Did you use this FTDI cable successfully on other platform before?(to make sure tx rx is correct)
4.2 Is this FTDI 3.3V? If not, high chance your FCU board is already burned. Send it back for repair.
4.3 Measure the voltage on Tx and RX pin while everything is connected, is it being pulled up at 3.3V? if less than 3 then there is a serious communication issue.
4.4 Is there EMI generator around?( this one happen to me once, took me 2 weeks to isolate the issue, EMI cause unreliable connection)
4.5 As an additional test, prob the tx and tx by Y cable using real-term to see if you can see any proper communication happening.
Did u forget to turn on the RC ? If so turn it on while calling the sdk.launch
GO app side issue
6.1 Did u connect the Go app while running sdk.launch? If not connect by GO app, connect it as it will pop up sth.
6.2 Did you login to your account which creates the app id?If not, login to it.
6.3 And is your account being banned for flying in the non-authorized area before(e.g caught by DJI aeroscope/Flyhub) and police is actually going after you? If so, stop playing the drone and surrender urself in. Normally it should be max of one year Jail time, but if you resist, the punishment can be more deadly.
Did u give authority from GO app? click ok or confirm on the GO App once you run sdk.launch in the RPI. Once you launch the sdk, the Go app will pop up sth, Did u do/experience it? After changing the firmware, you should experience this again.
Did u tried the hardware with the 3.8 with a Normal X86/X64 Intel PC/notebook with Ubuntu 16/18 before? is it working? ( rule out hardware / connection issue ) If can work, then its RPI issue. If can not, high chance drone/RC side. I do have couple RPI burn down experience b4.
Did u have valid/correct app id and enc key? double check it. If not, enter is correct.
Is the voltage supplied to A3 stable and clean?
Have you tried this way of calling? /the_sample_u_wish_to_run UserConfig.txt /dev/ttyACM0 (this is what I gathered from other peoples experience)
Which version of RPI you are using, if you are using 2 series, the high chance you have to use https://github.com/dji-sdk/Onboard-SDK/tree/raspberrypi-support with older version firmware. I only tested with RPI 3B. Can not guarantee the function of other versions. That's why number 8 is important to isolate the issue.
Are you calling the sdk.launch from somewhere else? make sure you only call it once and prevent it from being calling again. Make sure the serial port is not occupied.
Make sure API is enabled in DJI assistant2. Close everything power on and connect to DJI assistant 2 again to verify this. If by any chance the board has an issue, the API enable you set in the previous run will get auto deselected. This is to rule out burned FCU board issue.
If by now it is still can not work, then you should try other 3.8 or 3.7 with firmware 1.7.7 and 1.7.5 or whatever firmware you can access. as far as I know, their delay+ wait for ACK always have all sorts of issues. Maybe adding more delay in the wait for serial ack will help you(solution from other github dji_osdk post)
In case of this particular A3 burned, swap another fresh open A3 and proven working FTDI cable(test with Arduino) to rule out the A3 problem
Edit
17. If you are using m210 v2, the activation pop up will not shown on pilot app. Run the dji assistant 2 first and then call the sdk.launch twice.
If still no luck, file a ticket to dev#dji.com + send a complaint to Samuel#DJI. Send them the long list of thing you tested, and if they say high chance it is a hardware issue. Do send it back for RMA. I do have experience of one Normal A3 and one M600 A3 has burned FCU board issue before.
After this, if you encounter can not fly GPS mission by OSDK or can not do local flight control. Just try different firmware version. DJI firmware release is usually very buggy for developer.

On-device debugging with Sony Ericsson Cedar (J108i)

Unfortunately, I have to deal with J2ME (which I consider ancient technology these days) on Sony Ericsson J108i (aka Cedar).
Unfortunately I've failed to configure on-device debugging. I've done the following:
enabled Java developer mode in service settings
configured USB -> Advanced -> Internet access -> Via computer
installed J2ME SDK 2.5.0.6
disabled the Windows firewall
tried the whole procedure on both Windows XP and Windows 7
Unfortunately, Connection Proxy fails to connect to the device. The network interface is there, named 'Sony Ericsson Device 1039 USB Ethernet Emulation (NDIS 5)', but when I try to connect, the following is logged:
[18.03.12 13:23:45] Getting device ip. Failed to get deviceip for interface(Sony Ericsson Device 1039 USB Ethernet Emulation (NDIS 5) - Sterownik miniport Harmonogramu pakietów). Trying to get it from Connection Proxy settings(sdkme.properties). java.lang.RuntimeException: Unable to connect to the SEMC SDK Service1.
[18.03.12 13:23:45] Getting device ip. No device for interface=Sony Ericsson Device 1039 USB Ethernet Emulation (NDIS 5) - Sterownik miniport Harmonogramu pakietów
It actually looks like the interface is never assigned the correct IP. I've tried assigning IP manually, but it failed too (perhaps I did it incorrectly - the documentation is not really verbose here).
Any idea what I do wrong? Any success stories with on-device debugging using this particular phone?
I managed to get my Cedar device working on Vista 32-bit SP2:
1. First of all, make sure you're not using jdk7uX (otherwise you have to install MSVC 10 redistributable pack to make SEMC_SDK_Service start properly).
2. Edit SDK_Root/OnDeviceDebug/lib/sdkme.properties, set ipprovider.rebindOnConnect: true
(it's false by default), then uncomment and set proxy.device.ip: 192.168.8.2 and proxy.local.ip: 192.168.8.1 (both are commented out and empty by default)
3. Run SDK_Root/OnDeviceDebug/bin/restart_service.cmd
4. (Re)connect your Cedar device
5. Wait about a minute
6. Run SDK_Root/OnDeviceDebug/bin/restart_service.cmd
7. Run arp -a in console and ensure your interface is using 192.168.8.*, this could also take about a minute
8. Restart connection proxy and connect to your phone, everything should be OK
9. You should repeat steps 4-8 after each Windows start

Resources