Dronebridge working with Navio2 EXCEPT serial output from arducopter

So I have managed to successfully get DroneBridge running on the latest emlid navio2 image. The only problem I’m having is that I can’t seem to get telemetry working over anything but udp. The udp telemetry feed works fine. I’m able to connect via Mission Planner and all is well.

Unfortunately I need a working serial feed of the telemetry data for DroneBridge to display it. I can’t seem to get telemetry working over the Navio2 UART or USB.

I’m hoping someone can help me get unstuck here… DroneBridge is a perfect companion for the Navio2 IMO and I am so close to getting it all working.

Hardware and config details below.

What I have tried:

  • First, I tried using “socat” to create virtual ports for DroneBridge to talk to ardupilot on. No luck there.
  • Next I ordered 2 USB to TTL modules and tried:
    • first hooking them both to the Pi and each other and set ardupilot to output to /dev/ttyUSB0 (param: -C /dev/ttyUSB0); set DroneBridge to /dev/ttyUSB1, tried every baud rate from 1200 to 115200 - no luck.
    • then tried hooking the Navio2 UART to one of the USB to TTL modules (on the Pi), all bauds, no luck
    • decided maybe Dronebridge doesn’t like the data/format or something so connected to my (Windows) laptop via the 2 USB to TTL modules and attempted to connect to Mission Planner. I also tried connecting to the Navio2 UART (connected to the USB to TTL on the Windows PC). At 115200 baud it seemed to connect but it failed pulling parameters (again, this works fine if I open the UDP port with Mission Planner)
  • I also tried using an old telemetry modem with no luck - though I’m not 100% sure that device still works and currently don’t have the right plug to test it on an Arducopter (android) device I have.

One other thing to note, I can get DroneBridge to pull telemetry from my Arducopter (android) device over usb (device shows up as /dev/ttyACM0).

Here is my hardware:

  • Raspberry Pi 4
  • Navio2
  • Pi camera
  • Panda Wireless PAU09 (DroneBridge compatible wifi adapter- rt2800usb driver)
  • Power is being supplied to the Navio2/Pi via the power port on the Navio2, for testing I’m running off a 12V 1.5amp power supply
  • Additional power is supplied to the WiFi card via a split USB cable

Config:

  • Was running latest ardupilot in emlid image (v4.0.?) but updated it to latest beta trying to resolve this issue, didn’t help. Now running ArduCopter V4.0.6-rc1 (cc1f9a4b)
  • emlidtool - 1.0.8
  • Kernel: 4.19.127-emlid-v7l+
  • RCIO firmware: 0xb9064332

Hi Jason,

Welcome to the community forum, and thanks for the detailed description!

I’m currently looking into this. For now, could you please specify whether you use the power module while powering Navio2? All power sources should provide voltage in a 4.8-5.3V range. However, you mentioned that you supply Navio2 with 12V.

Thank you for responding.

I am powering the Navio2 with the power module. For bench testing I hook up a 12V DC power supply (to the power module, not direct) rather than a LiPo (so I don’t accidently over-drain a LiPo).

The ‘rail’ is getting power from one ESC (so should be 5V)

The USB WiFi card is getting (extra) power via a split connector hooked to 5V 3A. I am pretty sure that is feeding some of that back to the pi via the USB port (that device/power are attached to). I thought the split cable was only feeding power to the USB device and only the TX/RX wires led back to the pi, but I’ve noticed the pi actually staying on when I unplug the (main) power source (until I unplug the split USB cord).

If the USB port wasn’t working when I connect an Arducopter device to it I’d wonder if I didn’t have USB communication issues due to extra power coming in via USB (or another reason). That device does show up as ttyACM0 rather than ttyUSB0 (like the USB->TTL adapter), but it works. It should be sending/receiving basically the same data I am trying to get from the Arducopter telemetry feed coming out of the pi.

I know at some point I tried using a 3S lipo rather than my DC power supply, but I’m going to try that again tonight and verify it’s not a lack of amperage causing problems.

Any other ideas you have would be greatly appreciated!

Well, when I hooked up my fancy power supply (that I forgot I had) it was actually drawing 6A+ at 12V (again, via the power module). So it was way underpowered. Unfortunately so far it doesn’t seem like supplying additional power resolved the issue.

As I mentioned I had the additional 5V 3A supplying USB power for the WiFi card. I did some homework on the pi’s USB power and the pi won’t power up off power on it’s USB ports but it will use that power if it’s already on and it loses it’s main power feed. So what I saw was “normal”, however they caution you should only supply 500mA and I am way over that.

So I disconnected that additional USB power. Unfortunately that didn’t help either. Everything else still works though. I’m probably going to eventually need to supply that USB WiFi card with power that isn’t backfeeding, but at least until I resolve this issue I’ll leave it with only power coming in from the power module.

Obviously since I was overpowering the pi’s USB port it’s possible I damaged something. I think my next step is going to be trying it on a different Pi 4 just in case. I’m not optimistic that is the problem though. I’m basing that mostly on that I can talk to a separate Arducopter device successfully over the USB ports.

Also, add to the list of things I’ve tried, setting Arducopter (on the pi) to output to ttyAMA0 and having DroneBridge use that same port. The OS allows both processes to attach to the device (lsof /dev/ttyAMA0 shows both processes attached).

I’ve been using jpnevalator to view port activity (it’s currently showing nothing on ttyAMA0). I have seen some activity in the past on the port (I think when I had it using socat linked ports) but I couldn’t tell if it was coming from arducopter or DroneBridge. It was on the port DroneBridge was connected to, but I may have been seeing what was received. In any case DroneBridge couldn’t read it successfully and when I did it with physical hardware (various methods) attaching to Mission Planner on a PC I had the same result. It appeared to be sending data (that MP could read) but it never connected fully/successfully. Again, telemetry data via UDP worked great. In fact one solution I’m still considering is using socat to forward the UDP data to the serial port. I did give that a try at some point but I didn’t spend much time on it (yet). I’d like to fix it ‘correctly’ if possible.

Anyway the reason I brought up jpnevaluator is because I am wondering if you have a better method for looking at/verifying outbound telemetry data from Arducopter in your testing.

Ok so I discovered that (in Windows anyway) you can/need to set the baud rate on these USB->TTY adapters (from Device Manager). After I set the baud rate to 115200 I am able to connect successfully (and get telemetry) in Mission Planner (sending from the Navio2 UART to a Windows PC).

So not surprisingly my main problem was user error :slight_smile:

I am still not able to receive telemetry via DroneBridge though. I just tried taking the same USB->TTY adapter and hooking it to one of the pi’s USB ports and not having any luck. I think DroneBridge is setting the baud rate on the port (you specify one in it’s config file) but I also set the baud rate using stty.