Dear Johan Hovold. On Linux you can use manufacturing library to check firmware version. cd manufacturing/lib/manufacturing/linux make preinstall make install sudo make install cd manufacturing/lib/manufacturing/test/BasicTestApp/linux make ./CP210xManufacturingBasicTestApp Then it display some information of device: Found 1 CP210x devices Device 0: Product String - serial number: "a0d16702d2a3e81187d86c93f375b2a8" Product String - Description: "CP2102N USB to UART Bridge Controller" Error: CP210x_GetProductString() failed to return Full Path, status = 0x2 Product String (unsafe) - CP210x_GETPRODUCTSTRING_SERIAL_NUMBER: "a0d16702d2a3e81187d86c93f375b2a8" Product String (unsafe) - CP210x_GETPRODUCTSTRING_DESCRIPTION: "CP2102N USB to UART Bridge Controller" Error: CP210x_GetProductString(CP210x_GETPRODUCTSTRING_FULL_PATH) failed, status = 0x2 Part Number = 0x20 Firmware version = 0.1.1 Vendor ID = 0x10C4 Product ID = 0xEA60 The Firmware version is field that we need to looking for, it is formatted as major version; minor version; and patch. The A01 have range <= 1.0.4 version. It have error "3.6 CP2102N_E104 – IO Exception in .NET Applications when Manually Controlling RTS" as the cp2102n-errata.pdf have mentioned. Our recommend is you can chose 2 options: - option 1: remove the set xon_limit and xoff_limit lines in driver, because our firmware automatically set these value to some default values (usually very small values) in its memory if it detect these values are zeros. - option 2: archive Part Number and Firmware version, check if ( (PART_NUMBER == CP2102N_QFN28) \ || (PART_NUMBER == CP2102N_QFN24) \ || (PART_NUMBER == CP2102N_QFN20)) and Firmware version <=1.0.4 set the xon_limit and xoff_limit to zeros, other while set to other values. This option are more suitable. #define CP2102N_QFN28 0x20 #define CP2102N_QFN24 0x21 #define CP2102N_QFN20 0x22 Thanks.
<<attachment: manufacturing.zip>>