Solved! There is something you can do that doesn’t require sending the Pixhawk back.
After months of trying to describe my problem to people, I finally dug into the Copter code. Here’s what I posed on the Ardupilot Forum:
Well, OK, I think I solved this issue.
I spent a few days going through the APM Copter code and found the:
file. Down about 1/2 way are some lines:
state.uart = hal.uartC; // serial1, uartC, normally telem1
state.uart=hal.uartD; // serial2, uartD, normally telem2
state.uart=hal.uartB; // serial3, uartB, normally 1st GPS
state.uart=hal.uartE; // serial4, uartE, normally 2nd GPS
All I did was swtch hal.uartB with hal.uartE so that uartB is the 2nd GPS and uartE is the 1st.
I think this whole cpp file is where the firmware sets what serial ports are doing what.
So, I saved that and compiled a new firmware and uploaded to the Pixhawk.
Success, so far.
The telemetry on my FrSky Taranis comes up with coordinates, now! The GPS (same 3DR/ublox GPS) now is more stable and wanders (dithers) less. Drone can fly in loiter mode now.
I know there are a number of people who are being told by 3DR to buy another Pixhawk, but this clearly works and is free. Granted, you’re not going to be using a 2nd GPS.
With a broken GPS (Serial 3) header, you can indeed connect your 3DR uBlox GPS to the Serial4/5 header. You can change the protocol and baud rate of Serial4 to match the GPS settings of Serial3 (this is indeed the default setting in the code for Serial4).
Your GPS will fire up, and the position will be reported through lat2,long2, etc… Yeah!!!
You can do ‘auto’ planned missions.
However, in the Flight Data part of Mission Planner the GPS Fix indicator in the HSI with continue to indicate “No Fix”. And give no GPS Fix Data (numSats, 2D/3D, etc…).
Several flight modes don’t work well.
The position of the GPS dithers much more (I cannot understand why this happens).
If you are using a Teensy 3.1 to take the MavLink Data from Telem1/2 and transmit that to your Taranis, it won’t transmit any coordinates to your RC.
Altering the code in the way I did fixes the problem!