How to drive SITL with real CRSF data

Thanks to folks here, I have a simple rover running with Ardurover SITL in ROS2 (humble/harmonic). I have a working ELRS link coming in on a serial port that I’d like to route to the SITL so I can drive around in Manual mode. It looks like the port is opened, but when I look at the RC In window, nothing moves when I wiggle sticks.

My params look like this:

ATC_STR_RAT_FF 0.2
CRUISE_SPEED 3
CRUISE_THROTTLE 75
SERVO1_FUNCTION 73
SERVO3_FUNCTION 74
WP_SPEED 3
SERIAL1_PROTOCOL 23
SERIAL1_BAUD 420
RSSI_TYPE 3

My actual pixhawk listens on TELEM1, so I chose SERIAL1 and chose 23 for Crossfire protocol. I chose 420 as 420,000baud worked nicely when I was parsing crsf packets for use with ros control (using the husarion_ugv_crsf_teleop package)

It seems like the SITL is opening the port:

[usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000 -4] UART connection /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000
[usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000 -4] Opened /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0

I’m launching the SITL like so:

    sitl_dds = IncludeLaunchDescription(
        PythonLaunchDescriptionSource(
            [
                PathJoinSubstitution(
                    [
                        FindPackageShare("ardupilot_sitl"),
                        "launch",
                        "sitl_dds_udp.launch.py",
                    ]
                ),
            ]
        ),
        launch_arguments={
            "transport": "udp4",
            "port": "2019",
            "command": "ardurover",
            "synthetic_clock": "True",
            "wipe": "False",
            "model": "json",
            "speedup": "1",
            "slave": "0",
            "serial1": "uart:/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000",  
            "instance": "0",
            "defaults": os.path.join(
                pkg_roverfun_bringup,
                "config",
                "rover-skid.parm",
            )
            + ","
            + os.path.join(
                pkg_ardupilot_sitl,
                "config",
                "default_params",
                "dds_udp.parm",
            ),
            "sim_address": "127.0.0.1",
            "master": "tcp:127.0.0.1:5760",
            "sitl": "127.0.0.1:5501",
        }.items(),
    )

Am I going about this the right way? Thoughts on what to try next?

On the assumption that serial1 was used for something internal, I tried moving the whole thing to serial6. No change.

I tried calling it outside of ROS like so:
sim_vehicle.py -v rover -A "--serial6=uart:/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000" --console --map --add-param-file=/root/arduroverfun_ws/src/roverfun_bringup/config/rover-skid.parm

parameters:

CRUISE_SPEED 3
CRUISE_THROTTLE 75
SERVO1_FUNCTION 73
SERVO3_FUNCTION 74
WP_SPEED 3
SERIAL6_PROTOCOL 23
SERIAL6_BAUD 420
RSSI_TYPE 3
BRD_SAFETY_DEFLT 0

No change.