There are a few steps that you need to take to make this GPS/Compass with with Arducopter
First off I am referring to this GPS
I also HIGHLY recommend you get this USB to CAN adapter… it also works with changing parameters with The Hex Here2 Can GPS
This GPS by default uses dynamic node allocation, which relies on the flight controller to give it a node address. Prior to AP 4.0 this did not work, as those functions did not exist in AP…
The way around this is to use the UAVCAN software (which uses the hardware above) https://uavcan.org/GUI_Tool/Overview/ to set a specific node address, which you can pick anything between 1-125. You can also use a static node ID in AP 4.x as well with no issues. I picked to use 119 as my node ID
Enable the CAN driver (assuming you are on CAN1) CAN_P1_DRIVER set to 1
Then you need to set AP to look for the GPS on the UAVCAN bus… You do that by setting GPS_TYPE to 9 (which is UAVCAN)
Once you do that you reboot and plug in the GPS (if you haven’t already)
There is no safety switch on CAN, you will either need to disable it as a pre arm check or purchase/fabricate one
After the flight controller has booted up you get a GPD 3D fix in a short amount of time. You may need to go outside… for me it got the fix in my basement.’
You will also now need to calibrate your Compass which is in the GPS.
You can validate that the compass function is seen by looking for a UAVCAN type of compass in the HWID section
In this case I have the compass as ID2 and you can see it says UAVCAN.
If you have CUBE hardware there is an issue with bootup time for the compass function…
It’s a little odd but these are the symptoms…
If you plug in the USB cable into the FC and it boots up you will see the compass. At this point you can plug in the flight batteries and all is good. However if you plug in the flight batteries and boot the flight controller this way you will not have a UAVCAN compass as show below:
There is an issue with how long the compass takes to boot up. It is longer than the AP timeout.
Here is the thread on the Zubax forum
To solve this problem you have to change the Board Timeout… For me 6000 works perfect every bootup. To set this configure BRD_BOOT_DELAY and set it to 6000.
If you follow these steps you should have zero issues using this GPS/Compass with AP
Hope this helps