[APPROVED] Goku-versatile-f405-2s-12a-aio for porting


Proposal type: Hardware [X] , Software [ ] , Other [ ] : _________________


Planned amount $$ (USD): $100

Estimated time for completion:

2 weeks


This would be a nice addition for smaller 1-2s builds. this board is always in stock and has been consistently for the last 6-9 months. Plus there is the ELRS and non version. I had started a port awhile ago but was never confident enough to submit anything. @andyp1per I see your on the funding committee now why don’t you just approve this hahah. Looks like @james_pattison and @MagicRuB are on vacation. In the case that its not approved send me your PayPal I’ll flip you 100 bones for this

Approved by the @Funding_Team

1 Like

Test firmware in the PR

1 Like


This seems like a great little board for small quads / quad planes etc. Planning to use for a 3d-printed micro vtol project.

I picked one of them up and put the latest beta build on - everything seems to be functioning so far, except the IMU. When I try to calibrate accel in MP, it hangs for a second, and then drops serial connection and I have to restart both the FC and MP.

I got the board version with ICM42688, whereas the h/w def and description says it’s for MPU6000. I didn’t notice the distinction in advance.

Could that be the problem? Seems like a pretty simple change to the hwdef if I can figure out the specifics, and recompile.

In general, what happens if boards have alternate components like this? Is the approved Ardupilot target just for the one that’s considered more common…?

Any tips appreciated! And fairly new to Ardupilot so forgive my ignorance…!


We can change the hwdef to support both, it’s just the IMU orientation that can be a little tricky to get right. We try and support all the variants, but its harder when manufacturers don’t talk to us :slight_smile:

You want to try something like this in the hwdef:

SPIDEV icm42688   SPI1 DEVID1 GYRO1_CS   MODE3   1*MHZ   8*MHZ
IMU Invensensev3 SPI:icm42688 ROTATION_PITCH_180_YAW_90

Thanks! That worked - almost! I changed it to the below, per another board hwdef also using icm42688.

I then had to set AHRS_ORIENTATION to 2 (yaw 90) for orientation to align with the arrow on the board. So I’m not sure what this means the compile orientation should be. (unwinding these in my head always proves wrong!) Thanks again!

IMU Invensensev3 SPI:icm42688 ROTATION_PITCH_180_YAW_90


Thanks that would make sense! I will try it.

I have just compiled the firmware locally with ROTATION_ROLL_180 as per you and frequency line 2*MHZ 16*MHZ as per @zortrop, and it works - at least in terms of the angle changes being correct. Is it possible to support both IMU versions upstream?

Yes, just do a PR with those two lines added

Here it is. AP_HAL_Chibios: Update hwdef for FlywooF405S-AIO (alternative IMUs) by mbuzdalov · Pull Request #23908 · ArduPilot/ardupilot · GitHub

I have no idea so far why the order of the lines matters (e.g. if the old lines come before the new ones, my board does not work and apparently behaves as the current master). But since other boards tend to list Invensense v3 first, I guess this is the way to do it. (Is it because ICM42688 can communicate via the v1 protocol during initialization, and then fails to behave as expected?)

1 Like