# Making Serial Port Drivers User-Configurable This topic explains how to set up a serial driver so that it can be end-user configured (via parameters) to run on any of a flight controller board's configurable serial ports. ## Preconditions The driver is assumed to already exist, and be started in the shell using the command syntax: ```sh start -d [-b | -b p:] ``` where, - `-d`: serial port name. - `-b`: Baud rate (optional) if the driver supports multiple baud rates. If supported, the driver must allow you to specify the rate as both a bare baudrate and as a parameter name in the form `-b p:` (which can be parsed with `px4_get_parameter_value()`). :::tip See the [gps driver](https://github.com/PX4/PX4-Autopilot/blob/main/src/drivers/gps/gps.cpp#L1023) for an example. ::: ## Making the Driver Configurable To make driver configurable: 1. Create a YAML module configuration file: - Add a new file in the driver's source directory named **module.yaml** - Insert the following text and adjust as needed: ```cmake module_name: uLanding Radar serial_config: - command: ulanding_radar start -d ${SERIAL_DEV} -b p:${BAUD_PARAM} port_config_param: name: SENS_ULAND_CFG group: Sensors ``` ::: info The full documentation of the module configuration file can be found in the [validation/module_schema.yaml](https://github.com/PX4/PX4-Autopilot/blob/main/validation/module_schema.yaml) file. This is also used to validate all configuration files in CI. ::: 1. Add the module configuration to the **CMakeLists.txt** file for the driver module: ```cmake px4_add_module( MODULE drivers__ulanding MAIN ulanding_radar SRCS ulanding.cpp MODULE_CONFIG module.yaml ) ```