I use serial_port::async_read_some() to read data from serial interface on windows. Using virtual com ports (FTDI, SiLabs) everything wents as expected. But on native COM ports the completion handler is not called until the buffer (passed to async_read_some) is completely filled. I use "plain" communication without hardware handshake: ... typedef serial_port_base ser; mDevice.set_option( ser::baud_rate ( baud ) ); mDevice.set_option( ser::flow_control ( ser::flow_control::none ) ); mDevice.set_option( ser::parity ( ser::parity::none ) ); mDevice.set_option( ser::stop_bits ( ser::stop_bits::one ) ); mDevice.set_option( ser::character_size( 8 ) ); ... Do I miss something or is this a bug? tested on boost_1_38_0 and boost_1_46_1