Rc_channels_override_send() takes from 11 to 12 positional arguments but 21 were given

Have you checked which pixhawk port your light is plugged into? It’s possible it’s in a different port than the one in my example.

You can, but it shouldn’t be required. Once the heartbeat is successfully detected from an autopilot that’s running mavlink 2, pymavlink should automatically detect that and change to using mavlink 2 as well.

That means you don’t have a valid connection to your autopilot. There are multiple possible causes of that, but they depend on your setup. Assuming you’re trying to connect to your pixhawk from your surface computer, via the udp endpoint provided by the companion computer, then you’ll need to make sure your program has access to udp streams. If you’ve set up your network settings correctly (e.g. QGroundControl works as expected) then it’s possible you just need to allow python through your firewall, in the same way that you did for QGroundControl.