It really seems difficult to setup BLHeli and Dshot. If there are any suggestions on how to improve the wiki page or make the setup easier I would love to hear the suggestions.
I’m working on one small change which will display which servo outputs are using DShot (or OneShot) but I don’t think that will be enough to make the setup simple.
So are you saying that there is something wrong with the setup? I think that the problem is with the ArduCopter code in this case, because controlling the motors worked really well for 3.6.9 (I could not see any problems and the copter was flying very reliably - I don’t mean the telemetry which I’ve setup only now). I had even a motor failure (one of the motor wires desoldered) and the copter maintained the flight without any problems, I’ve noticed the issue only when attempting the next takeoff.
To resume shortly: it looks as if the motors 6-8 were not controlled correctly but their telemetry is working. Is this possible? It has been suggested that these outputs are controlled by a different timer? I was browsing github for the changes after 3.6.9 and so far I could not see anything related… After installing 3.6.9 all the motors are spinning (but the telemetry still works only for 6-8).
EDIT: so are you suggesting that the first step would be to make certain that all the ESCs are running DShot at all?
Configuring Dshot For me it was fairly straightforward to follow the docs. I think the confusion comes from the different configs needed for diff hardware. For example with my PH4 mini I can only use outputs 1-6 and then 9,10. And then my CUAV cube it’s only aux 1-6
If there were some quick start guide that called out these diff types of caveats, that might assist others.
Maybe the problem is related to the firmware version (Pixhawk4, fmuv5, etc?)
However, it has been working for 3.6.9 (I haven’t setup the telemetry then but the drone was flying very reliably). You are saying interesting things about the aux outputs which can be used, maybe it should be somehow described in the docs? Maybe my setup shouldn’t be working and it was fine only by chance? Which controller can then handle 8xDSHOT ESCs?
EDIT: How about isolating the problem and writing a tester doing just one thing: driving the DSHOT outputs? Maybe it already has been done? Why 8 DSHOTs does not work for some controllers? Hardware limitations? Or not enough combinations of outputs and timers available?
In the description of Pixhawk 4 in the ArduPilot’s docs:
it is stated:
The 8 auxillary PWM outputs are in 2 groups:
PWM 1, 2, 3 and 4 in group1
PWM 5 and 6 in group2
PWM 7 and 8 in group3
Channels within the same group need to use the same output rate. If any channel in a group uses DShot then all channels in the group need to use DShot.
It says “2 groups” and then lists 3 - copy & paste from another hardware? Or it has been changed?
BTW why this page does not say directly which firmware version of AP should be used for Pixhawk4? As it has been explained in this thread, it’s “Pixhawk4”?
Probably yes… does it mean that I need to buy Pixhawk4-mini? Is the whole thing related to the BRD_PWM_COUNT parameter? But it still does not answer the question why I’ve got the working the DSHOT telemetry on outputs 7 and 8? And why I was able to fly the drone? Falling back to PWM?
These restrictions should be mentioned on the AP’s DShot support page. From what is written there I’ve deduced that any AUX outputs are good for DSHOT…
The support page is not the place for that as it depends on the hardware and there are many boards supported. My suggestion is to type in a search engine “Ardupilot hwdef”. Locate your board in the list and if there is not a comprehensive setup page, which there is for the Pixhawk Mini, then open the hwdef.dat file and review the parameters. It’s obvious in most cases what the code means…
OK, I agree that listing all the board options would be difficult, but at least there should be a remark: Not all FMU outputs can be used for DSHOT, check in the board descriptions:
Another thing to describe is what exactly BRD_PWM_COUNT means. According to the docs the maximal value is 8, but for Pixhawk 4 mini you are expected to set 11. Moreover, the parameter descriptions says: “Controls number of FMU outputs which are setup for PWM.” But it can also refer to DSHOT?
Is there no chance to get it work on Pixhawk 4? Mini seems to have some deficiencies, for example smaller power board with just a single Power Module (Pixhawk 4 has two), and soldering pads for 4 motors.
EDIT: it’s interesting to note that even the cutting edge Holybro Durandal (STM32H7) has just 5 DShot outputs according to the descriptions:
Not 8 Dshot outputs no. As with all boards with an IO Controller those outputs don’t support it. And apparently this board only supports 6 of the 8 FMU outputs for Dshot.
There is a discrepancy between the Durandal board overview page and hwdef file. The hwdef file indicates 8 Aux outputs but it doesn’t explicitly say if all can be used for Dshot. So not sure.
Why DShot? You have telemetry and no need for calibration which I always didn’t like - lots of work with removing propellers, never sure if and when repeating calibration necessary, less accurate, problems at low temperatures etc.
And also better compared to UAVCAN where a single failed ESC can break down the whole bus?
But how to force DShot-based ESC into the PWM calibration mode?
You don’t need Dshot for ESC telemetry but no calibration is an advantage. Telemetry is a function of BLHeli32 not necessarily associated with the output protocol. And as I said PWM mode is Auto detected on the ESC’s and you don’t have to force anything. Set MOT_PWM_TYPE to PWM, Oneshot or Oneshot125 and calibrate with the transmitter as usual.
OK, I’ll try to fall back to PWM (in my setup) and do it, but is this documented anywhere in the BLHeli_32 docs? Or I will try to get back to my 3.6.9 setup and fly as then when it worked. I’m using the copter for 2x360 panos, so it was doing relatively short flights and all worked great. Replace FrSky telemetry with Mavlink…
It’s also very dependant on the hardware. My CUAV v5 nano can push shot on all pwm outputs. I guess it comes down to knowing what hardware you have and researching what it can do