Cannot arm motors

I am working on a simple Flight controller using the c_library_v1 mavlink_msg_command_long_pack message. I am using Wireshark and QGC to fill the message structure. I have an SDR Solo reloaded with OpenSolo 4.

I send a Heartbeat message once per second to tell the Solo we are alive. When I send the ARM command using the mavlink_msg_command_long_pack msg there does not appear to be any response. The Solo responds to QGC and as far as I can tell from wireshark I am packing the message the same way QGC does. I can connect to the Solo and read and parse a slew of message that are passed to the controller.

To say I am using Wireshark I mean I use Wireshark to log the data stream then play back the log file and decode the message using mavlink_msg_command_long_decode.

Are there any prerequisites other than the heartbeat message to turn on / arm the motors?

Are there any easier ways to debug the message stream?